【发布时间】:2018-10-17 18:04:54
【问题描述】:
这是一个更容易理解的例子。
function* a() {
yield takeEvery(action.LOGIN_SUCCESS, b)
}
function* b() {
yield takeEvery(action.FETCH_SUCCESS, c)
}
function* c() {
yield console.log('action from function a')
}
function* d() {
yield takeEvery(action.FETCH_SUCCESS, e)
}
function* e() {
yield console.log('action from function d')
}
yield all([
fork(a),
fork(d),
])
如果 LOGIN_SUCCESS 发生,则函数 b 开始等待 FETCH_SUCCESS。 同时,函数 d 正在等待 FETCH_SUCCESS。
问题是:如何在函数 a 中的 takeEvery 执行 LOGIN_SUCCESS 然后 FETCH_SUCCESS 操作后停止函数 d 运行?
在这种情况下,我只想调用函数 c。相反,函数 c 和函数 e 都被调用,因为 FETCH_SUCCESS 发生了。
我的想法是我想在 redux saga 中有一些东西,它可以记住前一个生成器采取的先前操作,以便我可以区分两种不同的路径:
1) LOGIN_SUCCESS -> FETCH_SUCCESS -> function c
2) FETCH_SUCCESS -> function e
希望我已经足够清楚:)
【问题讨论】:
标签: javascript redux generator yield redux-saga