Javascript 比赛但不要';不要取消别人
我试着在两个频道和一个发电机之间比赛。我是这样做的:Javascript 比赛但不要';不要取消别人,javascript,redux-saga,Javascript,Redux Saga,我试着在两个频道和一个发电机之间比赛。我是这样做的: const { fetchResult, canCancelChanResult, chanResult } = race({ fetchResult: fetchApi(....) canCancelChanResult: take(canCancelChan), chanResult: take(chan) }) function* fetchApi(....) { } fetchApi是这样的生成器: co
const { fetchResult, canCancelChanResult, chanResult } = race({
fetchResult: fetchApi(....)
canCancelChanResult: take(canCancelChan),
chanResult: take(chan)
})
function* fetchApi(....) {
}
fetchApi
是这样的生成器:
const { fetchResult, canCancelChanResult, chanResult } = race({
fetchResult: fetchApi(....)
canCancelChanResult: take(canCancelChan),
chanResult: take(chan)
})
function* fetchApi(....) {
}
当竞赛在任一通道上完成时,
fetchApi
将被取消。我不想取消它<代码>比赛似乎自动取消。有什么方法可以防止取消吗?您应该能够做到这一点:
const fetchTask = yield fork(fetchApi, ....)
const { fetchResult, canCancelChanResult, chanResult } = yield race({
fetchResult: join(fetchTask),
canCancelChanResult: take(canCancelChan),
chanResult: take(chan),
})
join
等待fork
完成。当其被取消时,只有连接被取消,而不是底层fork。Wow super cool。实际上,我有一个while循环,所以我可以使用join(fetchTask)
重新运行这个竞赛,它不会重新启动fetchTask,对吗?(现在正在测试,但代码有点不完整,所以请确认一下)我认为我们应该在race
上做yield
,对吗?因为我最终修复了我的代码,而且看起来fetchResult总是能马上通过,即使它应该挂起。一旦我放了一个yield
它就把它修好了。是的,对不起,种族是一个必须像其他任何效果一样产生的效果