这个问题有很多答案,但是它们中的大多数都同步了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