我有一个 Saga (A),它获取API。这与行动(a)有关。我想触发一个动作(B),它在内部调用(a),等待它完成,然后yield
什么的。
// saga A -> action_a
function *saga_a(action) {
yield put( ...action1...);
yield call(api, ...params);
yield put( ...action2...);
}
// saga B -> action_b
function *saga_b(action) {
yield put(..action3..)
waitFor -- put(action_a) <------ how to achieve this?
yield put(..action4..)
}
字符串
4条答案
按热度按时间frebpwbc1#
是的,有。您可以使用
take
来实现这一点。字符串
最新
您可以使用saga-toolkit来执行
put
和 wait for 操作,而无需take
-ing它们:型
flseospp2#
我做这件事的方式我的代码基地是通过调用其他 Saga 直接。不幸的是,它将两者耦合在一起,但由于您需要等待,耦合至少会更显式。
字符串
wtlkbnrh3#
这是一个有点晚,但我挣扎与同样的事情,并相信人们仍然有同样的问题。我不得不编写自己的扩展来实现这个功能。参见https://github.com/kutlugsahin/redux-saga-callback
最终你将能够做到这一点
字符串
jw5wzhpr4#
使用call代替put,直接调用 Saga 生成器代替action,如:
字符串