我试着在两个通道和一个发电机之间比赛。我是这样做的:
const { fetchResult, canCancelChanResult, chanResult } = race({
fetchResult: fetchApi(....)
canCancelChanResult: take(canCancelChan),
chanResult: take(chan)
})fetchApi是一个生成器,如下所示:
function* fetchApi(....) {
}当这两个通道中的任何一个完成竞争时,fetchApi将被取消。我不想取消它。race似乎是自动取消的。有没有办法防止这种取消?
发布于 2018-02-13 23:43:28
你应该能够做到这一点:
const fetchTask = yield fork(fetchApi, ....)
const { fetchResult, canCancelChanResult, chanResult } = yield race({
fetchResult: join(fetchTask),
canCancelChanResult: take(canCancelChan),
chanResult: take(chan),
})join等待fork完成。当它被取消时,只有join被取消,而不是底层的fork。
https://stackoverflow.com/questions/48764072
复制相似问题