比赛,但不要取消其他人

时间:2018-02-13 10:04:23

标签: javascript redux-saga

我正试图在两个频道和一台发电机之间比赛。我是这样做的:

const { fetchResult, canCancelChanResult, chanResult } = race({
    fetchResult: fetchApi(....)
    canCancelChanResult: take(canCancelChan),
    chanResult: take(chan)
})

fetchApi是这样的生成器:

function* fetchApi(....) {

}

当比赛在任一频道上完成时,fetchApi将被取消。我想不要取消它。 race似乎会自动取消。有没有办法阻止这种取消?

1 个答案:

答案 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而不取消底层分叉。