javascript - 等待异步动作创建者更新另一个动作创建者内部的状态
问题描述
我有一个执行异步请求并更新状态的操作创建器(使用 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())
,因为已经设置了逻辑。
解决方案
您只需要等待调用函数完成使用await
async
关键字:
export function requestA() {
return async function (dispatch) {
dispatch(startRequest())
await Service.getA().then(
data => dispatch(receivedA(data)),
error => console.log("An error occurred.", error)
)
}
}
推荐阅读
- c# - C# 变量在赋值后没有改变,改变显示在 UI 中
- android - 如何将图像从服务器(api)存储到房间数据库
- guidewire - Guidewire 索赔中心 6/8 版和 10 版之间的区别
- javascript - Lodash:对 json 对象进行分组和重组
- spring-cloud-contract - 消费者是否需要等待提供者在 Spring Cloud Contract 中运行第一轮测试?
- vue.js - jsconfig.json 给出 ts 错误
- django - Django在分组后获取模型所有字段
- javascript - 选项卡中的 JavaScript (JS) ES6 选项卡、嵌套问题、活动类被移除
- linux - 使用 packstack 成功安装 Openstack 后,Openstack Horizon 不工作
- node.js - NODEJS 繁琐的重新连接