redux - Redux saga - 加入和所有效果之间的区别
问题描述
Redux Sagajoin
和in有什么区别?all
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])
}
似乎他们俩都只是同步了几个任务。
解决方案
简而言之,一个是“同步”/,join
另一个是“异步”/ all
,
查看文档:
join([...tasks])
= 它将任务数组包装在连接效果中,大致相当于yield tasks.map(t => join(t))
- https://redux-saga.js.org/docs/api/#jointask
join
将解决加入任务的相同结果(成功或错误)。如果加入的任务被取消,取消也会传播到执行加入效果的 Saga。同样,这些加入者的任何潜在呼叫者也将被取消。
和:
all([...effects]) - parallel effects
= 创建一个效果描述,指示中间件并行运行多个效果并等待它们全部完成。这是与标准相当对应的 API Promise#all
- https://redux-saga.js.org/docs/api/#alleffects---parallel-effects
推荐阅读
- php - PHP 正在命令行中工作,但浏览器中出现错误 502
- c - 如何在 Visual Studio 中修复“忽略返回值:'scanf'”代码 C6031
- google-cloud-platform - 使用新主机规则修补会删除 urlMaps API 中的旧主机规则集
- python - 是否有与 Unix '$' 等价的 python?命令?
- android - android应用程序收到通知时如何显示自定义对话框
- jquery - 如何使用语义 ui 提供按钮剥离效果
- javascript - 修改函数以调用给定的回调并返回其结果
- artificial-intelligence - RL 代理的批评损失
- javascript - 用下拉值替换 URL 的一部分 - onchange
- amazon-web-services - AWS 自定义授权方、身份服务器和范围