只是试图让我的头脑围绕 redux-sagas 并遇到一个问题,在一个 saga 中设置两个观察者,然后取消它们。
一些背景知识:我有一个 JSON 编辑器组件,其中 saga 处理对后端 API 的调用以加载和保存 JSON 模式。该项目基于React Boilerplate,因此应用程序的结构几乎完全相同。
以下是相关代码:
export function* loadSchemaWatcher() {
const action = yield take(LOAD_SCHEMA)
yield call(loadSchema, action)
}
export function* saveSchemaWatcher() {
while (true) {
const action = yield take(SAVE_SCHEMA)
yield call(saveSchema, action)
}
}
export function* editorData() {
const watcher = yield [
fork(loadSchemaWatcher),
fork(saveSchemaWatcher)
]
yield take(LOCATION_CHANGE)
yield watcher.forEach(task => cancel(task))
}
export default [
editorData,
]
我认为这yield watcher.forEach(task => cancel(task))
只会遍历任务数组,但它们不会被取消。