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

如何确保所有主Action与子Action完成后再触发finalAction?

解决主/子Action全部完成后再触发finalAction的问题

你的问题核心是:fetchActions数组仅包含了主action的Promise,后续子subAction的异步操作没有被纳入等待链,导致Promise.all只等主action完成就触发了finalAction。

修改后的代码:

const exampleFunction = () => {
  const fetchActions = someArray.map(() => {
    // 返回完整Promise链,让主action完成后等待子action执行
    return dispatch(action()).then(response => {
      if (response?.data) {
        // 将子action的Promise返回,纳入链式等待
        return dispatch(subAction({response: response.data}))
      }
      // 无数据时返回已resolved的Promise,保证链不中断
      return Promise.resolve()
    })
  })

  return Promise.all(fetchActions)
    .then(() => dispatch(finalAction()))
}

逻辑说明:

  • 每个map迭代项都返回完整的Promise链:先执行主action,待其resolve后,再根据条件执行子subAction(若有数据),并将子action的Promise返回,让它成为链的一部分。
  • Promise.all(fetchActions)现在会等待所有主action、以及对应的子action(如果触发)全部完成后,才会进入回调触发finalAction。
  • 当response?.data不存在时,返回Promise.resolve()确保Promise链不会因为无返回值而提前结束,保证整体逻辑的一致性。

内容的提问来源于stack exchange,提问作者Dani Alcalà

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:15:02