【发布时间】:2017-10-19 13:10:36
【问题描述】:
我在使用 Promise.all() 时遇到问题。
我想将数组变量作为参数传递给 Promise.all(),如下所示。
const promArr = []
if (condition1) {
promArr.push(() => prom1(arg1, arg2))
}
if (condition2) {
promArr.push(() => prom2(arg1, arg2))
}
if (promArr.length > 0) Promise.all(promArr)
但即使条件全部为真,上述内容也不会运行承诺函数(prom1,prom2)。 (promArr.length 符合我的预期)
如果我将 Promise 函数直接推送到 promArr,恐怕它们在运行时会被推送到 promArr,而不是 Promise.all(promArr)。
在这种情况下如何正确使用 Promise?
【问题讨论】:
-
Promise.all需要一组承诺,而不是一组承诺返回函数。你为什么要包装它们? -
您也可以(并且应该)在空数组上调用
Promise.all。不需要if (promArr.length > 0)。