【发布时间】:2019-03-18 03:28:19
【问题描述】:
我有以下场景:
export function* addCircle(circleApi, { payload }) {
try {
const response = yield apply(
circleApi,
circleApi.addCircle,
[payload]
);
if (response.error_type) {
yield put(addCircleFailedAction(response.error));
} else {
yield put(addCircleSucceededAction(response));
}
} catch (err) {
console.error(err);
}
}
export function* addTender(tenderApi, { payload }) {
try {
// NOTE: I want this to finish before continuing with rest of saga below.
yield call(addCircleAction(payload.circlePayload));
// Rest of saga removed for brevity.
} catch (err) {
console.error(err);
}
}
所以,基本上addCircle 正在进行 API 调用,并且根据其成功,我调用适当的 redux 操作。现在,在另一个 saga 中,我调用了负责 addCircle saga 的操作,我希望它在继续执行 saga 的其余部分之前完成执行。我尝试使用 call,但它基本上不会等待 addCircle saga 完成执行。有什么方法可以等待吗?我从我的组件内部调用addCircle,我不需要等待它,但在这个特定的例子中,我必须在 saga 内部调用它,所以我真的需要等待它完成执行,改变状态的应用程序,这样我就可以在 addTender saga 的其余部分中使用更新的状态。有什么想法吗?
【问题讨论】:
-
看看下面使用
while (someCondition) {}redux-saga.js.org/docs/advanced/…的例子 -
@AlexanderStaroselsky 我不太清楚在我的情况下我该怎么做。你有什么想法?因为所有相关的动作和 sagas 都已经在代码中看到了。
标签: reactjs redux react-redux redux-saga