這個問題有很多答案,但是它們中的大多數都同步了promise的解析(即執行結束,而不是執行的開始)。按順序運行promise:每個promise都在前一個結束後開始
This solution假設我們已經有一個函數數組:
var funcs = [foo, bar, baz, qux];
如何排列等不執行函數創建的?我曾經嘗試這樣做:
var promises = [];
for (i = 0 ; i < 3, ++i){
promises.push(someFunction(i))
}
function someFunction(i) {
return new Promise((resolve, reject) => {
console.log(i);
resolve(i);
});
}
通過for循環的承諾陣列填充的結束,但someFunction
已經執行的4倍。使用Promise.all
或Q
序列只是序列解析。
我該如何實現這些功能開始的真正同步?特別是:
foo().then(bar).then(baz).then(qux);
檢查這個答案:https://stackoverflow.com/a/44371402/7636961 – wostex
我不認爲內置的承諾API有這個功能。你可以試試藍鳥的Promise.reduce:http://bluebirdjs.com/docs/api/promise.reduce.html –
@KarelG:正是我的問題!我怎樣才能將它推入數組而不調用它?我想在for循環中創建這些承諾。 – Ari