【问题标题】:Redux saga - difference between join and all effectsRedux saga - 加入和所有效果之间的区别
【发布时间】:2021-08-29 20:58:21
【问题描述】:

Redux Saga 中的joinall 有什么区别?

function* fetchUserData(userId) {
  const postsTask = yield fork(fetchAlbums, userId)
  const albumsTask = yield fork(fetchPosts, userId)
  
  yield join([postsTask, albumsTask])
}
function* fetchUserData(userId) {
  const postsTask = yield fork(fetchAlbums, userId)
  const albumsTask = yield fork(fetchPosts, userId)
  
  yield all([postsTask, albumsTask])
}

似乎他们俩只是同步了几个任务。

【问题讨论】:

    标签: redux react-redux redux-saga


    【解决方案1】:

    简而言之,一个是“同步”/join,另一个是“异步”/all

    查看文档:

    join([...tasks]) = 它将任务数组包装在连接效果中,大致相当于yield tasks.map(t => join(t)) - https://redux-saga.js.org/docs/api/#jointask

    join 将解析为加入任务的相同结果(成功或错误)。如果加入的任务被取消,取消也会传播到执行加入效果的 Saga。同样,这些加入者的任何潜在调用者也将被取消。

    和:

    all([...effects]) - parallel effects = 创建一个效果描述,指示中间件并行运行多个效果并等待所有效果完成。它与标准 Promise#all - https://redux-saga.js.org/docs/api/#alleffects---parallel-effects 相当对应的 API

    【讨论】:

      猜你喜欢
      • 2018-10-21
      • 2019-05-16
      • 2018-06-03
      • 2018-03-27
      • 1970-01-01
      • 2020-04-17
      • 2019-05-14
      • 2017-09-17
      • 2022-01-04
      相关资源
      最近更新 更多