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

亚龙

我有一个动作创建者,它执行异步请求并更新状态(使用 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)
    )
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

找出一个Git分支创建者

减少/显示相关操作的操作或由操作创建者自己生成的操作(如显示/隐藏加载屏幕)?

与将常规函数用作异步操作创建者相比,在redux中使用thunk中间件有什么好处?

将配置传递给Redux操作创建者的正确方法

如何测试使用setTimeout调用另一个动作的异步动作创建者

Redux-如何从另一个动作创建者内部调用动作创建者?

在React中,是否可以从实用程序函数内部访问Redux操作创建者?

Redux:从另一个动作创建者调用一个动作

Redux-Thunk-异步操作创建者Promise和Chaining不起作用

解决动作创建者中的异步功能

用于在动作创建者中获取状态的Redux模式

如何按顺序调用异步动作创建者?

在表单提交时调用异步redux操作创建者

为什么要将Redux操作创建者返回的操作放在括号中?

动作创建者没有等待

在动作创建者中使用状态来反应redux

Redux:异步操作创建者未被调用

需要一个用于Linux的播放列表创建者,该创建者会执行相对路径

DOM元素创建者

制作备份创建者

Redux动作创建者在另一个内部调用

检查动作创建者内部

登录/目录创建者

.forEach 中的异步操作创建者在运行单元测试时不返回操作

用玩笑测试 redux 异步动作创建者

无法从动作创建者内部调度异步动作

边界框创建者

异步作业队列创建者,一次完成一项工作

期望分配或函数调用 Redux 操作创建者