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

比如有一个函数,里边是ajax异步functionGetIntegralMallList(){$.ajax({type:"post",dataType:"json",ur... 比如有一个函数,里边是ajax异步
function GetIntegralMallList() {
$.ajax({
type: "post",
dataType: "json",
url: "地址",
success: function (data) {
//这里可以获取服务器的值,如果我还需要再异步请求一次将data当参数,这样就看起来很乱,要是再次异步回来的值又进行异步,那就代码已经不能读了
}
})
}

要求:1.不能用同步,这样会失去异步的优势。
2.除去把函数当参数传递进来的解决方法。
展开
 我来答
小傅说数码
2017-01-09 · 数码小专家,专注分享数码知识
小傅说数码
采纳数:432 获赞数:29256

向TA提问 私信TA
展开全部
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文件解决兼容问题。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式