You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Promise.all()中根据参数值条件性执行Promise?

优雅实现条件性并行Promise执行

可以通过构建候选Promise数组并过滤无效项的方式,完全避免显式的if-else分支,实现需求:

简洁版实现

Promise.all([
  var1 !== null && promise1(var1),
  var2 !== null && promise2(var2)
].filter(Boolean));

原理说明

  • 利用逻辑与&&的短路特性:当var1 !== null为真时,表达式返回promise1(var1)的实例;为假时返回false
  • filter(Boolean)会自动过滤数组中的假值(false、null、undefined等),只保留有效的Promise实例
  • 如果var1和var2都为null,Promise.all会接收空数组并直接resolve,符合预期

高扩展性版实现

如果后续需要添加更多条件Promise,这种写法可读性和扩展性更强:

// 定义任务列表:每个任务包含执行条件和执行函数
const promiseTasks = [
  { shouldRun: var1 !== null, run: () => promise1(var1) },
  { shouldRun: var2 !== null, run: () => promise2(var2) }
];

// 过滤出需要执行的任务并调用执行函数,最后并行执行
Promise.all(
  promiseTasks
    .filter(task => task.shouldRun)
    .map(task => task.run())
);

内容的提问来源于stack exchange,提问作者tazmin32w

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:06:30