gpt4 book ai didi

javascript - 当我想将数组变量作为参数传递时如何使用 Promise.all()

转载 作者:行者123 更新时间:2023-11-30 14:58:59 26 4
gpt4 key购买 nike

我在使用 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)

但是即使条件全部为真,上面的代码也不会运行 promise 函数(prom1, prom2)。 (promAr.length 和我预想的一样)

如果我将 promise 函数直接推送到 promAr,恐怕它们会在被推送到 promAr 时运行,而不是在 Promise.all( promAr).

在这种情况下如何正确使用 Promise?

最佳答案

使用promAr 变量就可以了。然而(顾名思义)它应该是一个 promise 数组,而不是一个返回 promises 的函数数组。

const promArr = []
if (condition1) {
promArr.push(prom1(arg1, arg2))
}
if (condition2) {
promArr.push(prom2(arg1, arg2))
}
return Promise.all(promArr)

if I push promise functions directly to promArr, I'm afraid they run at that time they are pushed to promArr, not at Promise.all(promArr).

Promise.all 不会运行任何函数,你必须自己做。是的,通过在条件 block 内立即调用 prom1prom2,它们将在条件被评估后立即开始,但如果它们是正确的异步并且不干扰以下条件认为不是问题。请注意,他们返回的 promise 尚未等待,他们将并行处理。

关于javascript - 当我想将数组变量作为参数传递时如何使用 Promise.all(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46830699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com