javascript - 循环异步回调问题

查看:114
本文介绍了javascript - 循环异步回调问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我有一个数组:

var a = [0,1,2,3];

我需要遍历这个数组并且提交ajax,然后判断提交是否成功来确认是否执行下一个

a.forEach(function(item){
    $.ajax({
        type: "get",
        async: false,//设置为同步
        url: "test.html",
        data:item,
        success: function() {
            //do something
            //成功才执行下一个元素提交 
        }
    });
})

我查了一下,应该不能用循环写了,只能用手动回调,例如:

var tmp = a[0];
function f1(tmp){
    $.ajax({
        type: "get",
        async: false,//设置为同步
        url: "test.html",
        data: tmp,
        success: function() {
            //do something
            //成功才执行下一个元素提交
            tmp = a.splice(0,1)
            f1(tmp)
        }
    });
}

请问是否有更好的办法,或者有什么建议提示呢?谢谢.

解决方案

把ajax视作异步对象或者promise,用Promise库的一些工具来实现嘛

比如用Bluebird

Promise.each
Promise.mapSeries   

都是可以的

比如用Q这个库

[step1_func, step2_func, step3_func].reduce(Q.when, Q(true));

这篇关于javascript - 循环异步回调问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆