为了账号安全,请及时绑定邮箱和手机立即绑定

Promise.All 有条件地等待 Promise

Promise.All 有条件地等待 Promise

动漫人物 2023-11-12 15:30:44
我有一个异步函数列表,每个函数都有一个条件,当且仅当满足相应的条件并且我想并行运行所有函数时才应该调用该函数。例子:await Promise.all([asyncFunc1(), asyncFunc2(), ...])当且仅当满足相应的条件: cond1、 、 ...时,才应调用列表中的每个函数。cond2这样做的最佳方法是什么?
查看完整描述

2 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

我想出了这个非常简单的解决方案:


const promiseList = []

if(cond1) promiseList.push(asyncFun1())

if(cond2) promiseList.push(asyncFun2())

...

await Promise.all(promiseList)


查看完整回答
反对 回复 2023-11-12
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

将条件放入数组中,并用它过滤函数列表:


const conditions = [cond1, cond2, cond3, cond4]

const functions = [asyncFunc1, asyncFunc2, () => asyncFunc3(foo), bar.asyncFunc4.bind(bar, baz)]


await Promise.all(

  functions

    .filter((_, i) => conditions[i])

    .map(fn => fn())

)

将参数传递给异步函数(或保留其this上下文)、.bind它们或将它们包装在其他函数中。


查看完整回答
反对 回复 2023-11-12
  • 2 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信