Redux-saga - 如何取消动作分派的分叉过程
Redux-saga - how to cancel forked process on action dispatch
我有以下 Saga:
function* interiorFileSaga() {
yield [
takeLatest(wizardActionTypes.UPLOAD_INTERIOR_FILE, handleInteriorFileUpload),
takeLatest(wizardActionTypes.INTERIOR_FILE_PROCESSING, handleInteriorFileProcessing),
]
}
负责上传和处理文件。在 handleInteriorFileProcessing 内部我有一个 while 循环,它正在检查文件处理进度等。我想取消分叉过程,当我们调度某个操作时 - 当用户更改页面时,在组件卸载时我想停止该过程。我知道取消效果是以过程为参数的。有没有办法取消所有子进程?这里的正确语法是什么,可以取消 handleInteriorFileProcessing 进程,比如说 CANCEL_BACKGROUND_JOB。我是 Saga 的初学者,无法找到一种方法来取消 saga 中的一个进程,该进程负责像这里这样分叉一些任务。
祝福。
最简单的可能是
takeLatest([wizardActionTypes.INTERIOR_FILE_PROCESSING, CANCEL_BACKGROUND_JOB], handleInteriorFileProcessing)
并在您的函数内部检查实际发生了什么。
这是有效的,因为 takeLatest
从该语句中取消了 运行 任务。
取消事物的另一种方法是使用 race
效果,它会取消所有 'losers'.
我有以下 Saga:
function* interiorFileSaga() {
yield [
takeLatest(wizardActionTypes.UPLOAD_INTERIOR_FILE, handleInteriorFileUpload),
takeLatest(wizardActionTypes.INTERIOR_FILE_PROCESSING, handleInteriorFileProcessing),
]
}
负责上传和处理文件。在 handleInteriorFileProcessing 内部我有一个 while 循环,它正在检查文件处理进度等。我想取消分叉过程,当我们调度某个操作时 - 当用户更改页面时,在组件卸载时我想停止该过程。我知道取消效果是以过程为参数的。有没有办法取消所有子进程?这里的正确语法是什么,可以取消 handleInteriorFileProcessing 进程,比如说 CANCEL_BACKGROUND_JOB。我是 Saga 的初学者,无法找到一种方法来取消 saga 中的一个进程,该进程负责像这里这样分叉一些任务。 祝福。
最简单的可能是
takeLatest([wizardActionTypes.INTERIOR_FILE_PROCESSING, CANCEL_BACKGROUND_JOB], handleInteriorFileProcessing)
并在您的函数内部检查实际发生了什么。
这是有效的,因为 takeLatest
从该语句中取消了 运行 任务。
取消事物的另一种方法是使用 race
效果,它会取消所有 'losers'.