redux-saga チャンネルのドキュメントを調べていました。コードに遭遇した場所:
export function* saga() {
const chan = yield call(countdown, value)
try {
while (true) {
let seconds = yield take(chan)
console.log(`countdown: ${seconds}`)
}
} finally {
if (yield cancelled()) {
chan.close()
console.log('countdown cancelled')
}
}
}
ご覧のとおり、これは決して終了しない無限ループであるため、break または throw と例外を呼び出す必要があります。しかし、上記の例では、どれも当てはまりません。上記のコードまたは呼び出し元の関数内でスローされるブレークまたは例外はありません。上記の無限ループが終了し、finally ブロックに到達するにはどうすればよいでしょうか?
参照: http://yelouafi.github.io/redux-saga/docs/advanced/Channels.html