在redux-saga中,你有什么理由赞成使用callvs. fork和join?
例如,在调用HTTP API时,执行此操作的优缺点是什么:
const result = yield call(apiWrapperFunction, arg1, arg2)
Run Code Online (Sandbox Code Playgroud)
与此相对:
const task = yield fork(apiWrapperFunction, arg1, arg2)
const result = yield join(task)
Run Code Online (Sandbox Code Playgroud)
Ida*_*gan 12
除了@Pier 的回答,
两者都可用于调用普通函数和生成器函数。
此外,对fnfork(fn, ...args)执行非阻塞调用- while正在阻塞。call(fn, ...args)
例子:
function* main() {
yield fork(someSaga);
console.log('this won't wait for the completion of someSaga');
}
function* main() {
yield call(someSaga);
console.log('this will wait for the completion of someSaga');
}
Run Code Online (Sandbox Code Playgroud)
这是一个有用的 fork示例。
没有那么多,据我所知道的,但你可以取消的任务fork和join.
const task = yield fork(api, arg);
if (someCondition) {
yield cancel(task);
}
const result = yield join(task);
// Now a no-op since `join` blocked for the task to finish
cancel(task);
Run Code Online (Sandbox Code Playgroud)
当您使用时,差异会更大spawn.它将创建一个分离的fork,当父任务(例如)时不会自动取消.
| 归档时间: |
|
| 查看次数: |
2727 次 |
| 最近记录: |