[React JS]如何在动作创建者中等待“返回”直到“发送”完成? 我不知道如何处理;(
我做了一些代码。这是动作创建者的一部分。但是它在调度完成之前返回。我想在“返回”之前调度完成。请帮助我
export const Hello = param=> dispatch => {
return postApi('/hello', param)
.then(async res => {
await dispatch(goHello(res));
return true;
})
答案 0 :(得分:1)
默认情况下,在调度(Preferences > Plugins on macOS, File >
Settings > Plugins on Windows & Linux).
之后,实际上不需要调用return。但是,如果您愿意,可以使用action
方法在返回之前检查是否已处理您的操作。 getState()
是要在动作创建者中返回的redux-thunk函数的第二个参数。
getState()
答案 1 :(得分:0)
您可以在await
上使用postApi
。您只能在await
函数内部直接使用async
。 Link。
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
。