我正在使用Kriskowal Q library来处理承诺。解决与Q.all同步的承诺(承诺)
我写了下面的函数,等到所有的promise都解决了。
function multiplePromises(targetArray) {
var promises = {};
for (var i=0; i<targetArray.length; i++) {
var promise = singlePromise(); // any async. function
promises[i] = promise;
};
return Q.all(promises);
};
和我称之为如下:(?例如是同步的)
multiplePromises(targetArray).then(
function(success){
console.log("success");
},
function(error){
console.log("error", error);
}
);
我想知道然而是否存在其中的承诺被解析的顺序。即该功能是否等待触发下一个承诺i+1
,直到承诺i
得到解决?或者,它与其他所有异步一样。方法,它实际上触发了所有单一的承诺,只是等到它们全部完成了?
如果第二种情况下,如何重写此函数以确保承诺i+1
只有在承诺i
已解决时才会触发?
更新:测试
我做了一个测试,把:
promises[i] = i;
,以检查它是否解决sycnhronously,它似乎如此。但是,这可能只是我的异步函数足够快而能够快速地解决它。这看起来正确吗?
什么sycnhronously'我想你的意思'serially' - 因为有绝对没有同步关于承诺 –
清除。任何想法如何使它“连续”? – JohnAndrews
是的,很容易,如果我只知道'Promise.resolve()'Q'相当于'' –