我正在使用when()
来组合承诺。我正在寻找一种方法,就像done()
一样
结合承诺,具有以下特征:
resolveWith
的结果按顺序发送给我,但是展开 - 而不是每个分辨率的[result, "success", ...]
数组这样的事情是否存在?
答案 0 :(得分:1)
这样的事情是否存在?
不,但您可以使用arguments
object和apply
自行编写:
function whenAllThenEach(promises, callback) {
$.when.apply($, promises).then(function() {
return $.map(arguments, function(args) {
return callback.apply(null, args);
});
});
}
答案 1 :(得分:0)
类似的东西:
$.when(something1, something2).then(thenyoudosomething).done(function(){
// the results from what you use .then
})
答案 2 :(得分:0)
是的,它叫做。然后。你可以使用.then来处理参数并返回一个新的deferred,它是用你认为合适的参数解析的。
function ajax(n) {
return $.Deferred(function(def){
def.resolve(n,"success",{responseText:n});
}).promise();
}
$.when(ajax(1),ajax(2),ajax(3)).then(function(a,b,c){
return $.Deferred().resolve(a[0],b[0],c[0]);
}).done(function(a,b,c){
console.log(a,b,c); // 1 2 3
})