Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比赛但不要';不要取消别人_Javascript_Redux Saga - Fatal编程技术网

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
它就把它修好了。是的,对不起,种族是一个必须像其他任何效果一样产生的效果