正在等待异步操作创建者更新另一个操作创建者内部的状态



我有一个操作创建者,它执行异步请求并更新状态(使用react redux中间件(:

export function requestA() {
return function (dispatch) {
dispatch(startRequest())
return Service.getA().then(
data => dispatch(receivedA(data)),
error => console.log("An error occurred.", error)
)
}
}

这很好。现在我想创建另一个操作创建者,它将使用requestA()操作创建者,并将调用另一个异步请求。

export function requestB() {
return function (dispatch, getState) {
dispatch(requestA()) // <--- How to await for this ???
let A_data = getState().A_data;
return Service.getB(A_data).then(
data => dispatch(receivedB(data)),
error => console.log("An error occurred.", error)
)
}
}

在我继续运行函数的其余部分之前,有没有一种方法可以让我等待dispatch(requestA())完成?在继续下一个请求之前,我需要更新状态。

注意我知道我可以通过调用操作创建者中的2个请求来实现这一点,但我想知道我是否可以通过调用dispatch(requestA())来实现,因为逻辑已经设置好了。

您只需要等待调用函数使用awaitasync关键字完成即可:

export function requestA() {
return async function (dispatch) {
dispatch(startRequest())
await Service.getA().then(
data => dispatch(receivedA(data)),
error => console.log("An error occurred.", error)
)
}
}

最新更新