jquery ajax 异步请求获取数据再次异步,有什么好的办法简洁一些

2020-08-30 教育 103阅读
new Promise(function(resolve, reject) {
    $.ajax({
        url: "url1",
        success: function(data) {
            resolve(data);
        }
    });
}).then(function(value) {
    return new Promise(function(resolve, reject) {
        $.ajax({
            url: "url2",
            data: {
                data: value//第一个请求的返回值
            },
            success: function(data) {
                resolve(data);
            }
        });
    })
}).then(function(value) {
    return new Promise(function(resolve, reject) {
        $.ajax({
            url: "url3",
            data: {
                data: value//第二个请求的返回值
            },
            success: function(data) {
                console.log("三个请求全部成功");
                resolve(data);
            }
        })
    })
});
console.log("第三个请求成功之前打印,证明不是同步代码");

搜索“js promise”,这是专门解决这个问题的。如果你需要大量使用回调嵌套,可以用这种办法。如果用的很少,还不如直接嵌套,毕竟低版本浏览器不能直接支持,还得引入一些额外的js文件解决兼容问题。

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com