凭借ES2016,我们现在有了承诺,这很棒。不幸的是,该功能非常简约,并且没有像async包中可用的系列或瀑布那样。 如果有一个软件包为promises提供此功能,或者人们通常如何处理这些用例?
答案 0 :(得分:5)
要连续执行返回promises的函数数组,可以使用Array.prototype.reduce
:
let final = functions.reduce((prev, f) => prev.then(f), Promise.resolve());
"首字母"参数Promise.resolve()
用于为promises链设定种子,否则(如果传递的数组只包含一个函数),.reduce
回调永远不会被调用。
答案 1 :(得分:1)
此功能的大部分已经存在(或将存在)语言:
Promise.all()
Promise.race()
reduce()
,或使用异步迭代协议。