Jquery中Deferred实现函数数组并发

//定义一个数组,用于装需要并发的函数
var apisPost = [];
//往里面装异步的函数
apisPost.push(function () {
    var dtd = $.Deferred();
    //封装的ajax请求
    api.apiFn('url', {}, function (d) {
        //ajax请求成功resolve
        dtd.resolve();
    });
    //返回promise状态
    return dtd.promise();
});
//装第二个函数
apisPost.push(function () {
    var dtd = $.Deferred();
    api.apiFn('url', {}, function (d) {
        dtd.resolve();
    });
    return dtd.promise();
});
//并发请求
//使用apply实现遍历数组中函数,配合map得到每个promise并返回
$.when.apply(null, apisPost.map(function (v) {
    return v();
})).done(function (data) {
    //所有并发都成功
}).fail(function (error) {
    //并发没有全部成功
})

你可能感兴趣的:(javascript,jquery)