Redux Toolkit:在一个thunk中调度多个异步thunk操作时,生命周期操作类型不同步

时间:2020-09-10 19:27:53

标签: javascript reactjs typescript redux redux-toolkit

我有一个异步重击动作来协调多个这样的异步重击

someAction

我发现异步重击(即someActionmy/thunk中的任何一个都被拒绝了,my/thunk仍然可以实现。当其中一个重击拒绝时,如何使MappingIterator<MyClass> iterator = new ObjectMapper() .readerFor(MyClass.class) .readValues(file); while (iterator.hasNext()) { MyClass object = iterator.next(); ... } 被拒绝?

2 个答案:

答案 0 :(得分:2)

createAsyncThunk总是会捕获错误,以便避免在您的应用中出现“未兑现承诺被拒绝”消息。

您需要自己检查每个用户的结果,并相应地返回被拒绝的承诺。

此外,请注意,按照当前的编写方式,您的代码将同时运行这两个thunk。很好,只需确保它是您真正想要的-串行运行它们,就需要await

这里的一个选项是:

return Promise.all([
  thunkApi.dispatch(someAction()).then(unwrapResult),
  thunkApi.dispatch(someAction2()).then(unwrapResult)
]);

那将:

  • 同时运行两个动作
  • 将每个操作的结果操作转换回已实现或已拒绝的承诺
  • 返回承诺,如果其中一个请求被拒绝,则该承诺将被拒绝

答案 1 :(得分:-1)

检查您的子操作结果,然后在其中thrownew Error进行简单检查,您的主要操作就会自动捕获到该结果。并将以reject结尾。

例如: enter image description here

或如果正确配置了类型,则可以销毁错误对象并进行如下检查错误: if(error) throw Error('Some message!');