如何等待“返回”直到“发送”完成

时间:2019-05-27 00:22:19

标签: reactjs

[React JS]如何在动作创建者中等待“返回”直到“发送”完成? 我不知道如何处理;(

我做了一些代码。这是动作创建者的一部分。但是它在调度完成之前返回。我想在“返回”之前调度完成。请帮助我

export const Hello = param=> dispatch => {
  return postApi('/hello', param)
    .then(async res => {
      await dispatch(goHello(res));
       return true;
})

2 个答案:

答案 0 :(得分:1)

默认情况下,在调度(Preferences > Plugins on macOS, File > Settings > Plugins on Windows & Linux).之后,实际上不需要调用return。但是,如果您愿意,可以使用action方法在返回之前检查是否已处理您的操作。 getState()是要在动作创建者中返回的redux-thunk函数的第二个参数。

getState()

答案 1 :(得分:0)

您可以在await上使用postApi。您只能在await函数内部直接使用asyncLink

export const Hello = (param) => async (dispatch, getState) => {
   const res = await postApi("/hello", param); // <- code pauses here

   const res2 = await anotherPostApi("/helloagain", param); // <- will wait for above

   dispatch(goHello(res));

   // You can also wrap the await postApi in a try catch instead of using .catch


   const value = getState().keyOfReducerInStore <-- returns the state of your reducer, you can follow this up with whatever value you want to check
    if(value){
        return true
    }
}

请记住。只要位于await函数内部,就可以async进行承诺。如果您console.log是一个变量,它将显示是否为Promise