我正试图在两个频道和一台发电机之间比赛。我是这样做的:
const { fetchResult, canCancelChanResult, chanResult } = race({
fetchResult: fetchApi(....)
canCancelChanResult: take(canCancelChan),
chanResult: take(chan)
})
fetchApi
是这样的生成器:
function* fetchApi(....) {
}
当比赛在任一频道上完成时,fetchApi
将被取消。我想不要取消它。 race
似乎会自动取消。有没有办法阻止这种取消?
答案 0 :(得分:1)
你应该可以这样做:
const fetchTask = yield fork(fetchApi, ....)
const { fetchResult, canCancelChanResult, chanResult } = yield race({
fetchResult: join(fetchTask),
canCancelChanResult: take(canCancelChan),
chanResult: take(chan),
})
join
等待fork
完成。取消后,只取消join
而不取消底层分叉。