Javascript 我需要一种方法来执行封装在函数中的ajax调用数组
我使用的系统设计为只进行同步ajax调用,因此我正在寻找一种解决方法。首先,我有一个封装在函数中的ajax调用。然后,我将其包装到另一个函数中,以便在将其添加到数组时不会执行它。因此,我有两个异步ajax调用函数数组。我希望执行第一个数组中的所有内容,然后等待所有内容完成。然后我想在第二个数组中执行所有内容。这就是我目前所拥有的 我有一个遍历项目的循环,每个项目都有一个wrap函数,它接受我已经包装好的ajax调用,这样就不会执行它,并将它存储在如下所示的数组中Javascript 我需要一种方法来执行封装在函数中的ajax调用数组,javascript,ajax,asynchronous,promise,Javascript,Ajax,Asynchronous,Promise,我使用的系统设计为只进行同步ajax调用,因此我正在寻找一种解决方法。首先,我有一个封装在函数中的ajax调用。然后,我将其包装到另一个函数中,以便在将其添加到数组时不会执行它。因此,我有两个异步ajax调用函数数组。我希望执行第一个数组中的所有内容,然后等待所有内容完成。然后我想在第二个数组中执行所有内容。这就是我目前所拥有的 我有一个遍历项目的循环,每个项目都有一个wrap函数,它接受我已经包装好的ajax调用,这样就不会执行它,并将它存储在如下所示的数组中 var postpromises
var postpromises = [];
var WrapFunction = function (fn, context, params) {
return function () {
fn.apply(context, params);
};
}
var postPromise = WrapFunction(ajaxFunction, this, [{
url: url,
data: j,
async: true,
type: 'POST',
success: function (data) {
//success
},
error: function (xhr, textStatus, errorThrown) {
//error
}
}]);
postpromises.push(postPromise);
然后我有相同的代码进行验证。在我进入下一页之前,我有以下几点
$.when.apply(undefined, postpromises).then(function () {
console.log();
$.when.apply(undefined, validatepromises).then(function () {
console.log();
});
});
问题是,当我读到上面的代码时,我的postpromises
甚至都没有被执行,所以我觉得我可能遗漏了一些东西
想法?函数
$。当
需要承诺时,在代码中返回的函数不返回任何内容,因此只需返回包装函数的结果:
- ES6扩展运算符
- 函数参数对象
var postpromises=[];
var validatepromises=[];
函数f1(){
var fakePromise=$.Deferred();
设置超时(()=>{
假装承诺。解决(“我解决了!!”;
}, 500);
返回fakePromise.promise();
}
//老的
/*var WrapFunction=函数(fn、上下文、参数){
返回函数(){
fn.应用(上下文、参数);
};
}*/
var WrapFunction=函数(fn、上下文、参数){
返回函数(){
返回fn.apply(上下文,参数);
}();
}
var postPromise=WrapFunction(f1,this,[]);
postPromise=[postPromise];
var validatePromise=WrapFunction(f1,this,[]);
validatepromises=[validatePromise];
//老的
/*$.when.apply(未定义,后promises).then(函数(res){
控制台日志(res);
$.when.apply(未定义,validatepromises)。然后(函数(res){
控制台日志(res);
});
});*/
$.when.apply(null,[…postpromises,…validatepromises])。然后(function(){
console.log([].slice.call(参数))
})
WrapFunction不返回承诺这就是为什么可能没有执行的原因吗?回答得好,但也改进了不必要的$嵌套。而是返回内部$的值。当
时,在外部承诺链上应用然后
。是的,实际上嵌套的当
可以合并到一个函数中时,我将更新我的答案