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

2024-10-28 17:11:55
推荐回答(1个)
回答1:

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文件解决兼容问题。