保证发货顺序

Gre*_*egg 3 synchronization reactjs redux redux-thunk react-redux

我试图找出有关 redux 减速器的一些信息,但我认为术语可能会有所不同,因为这是 JavaScript。

假设有以下减速器:

import {
  ONE,
  TWO,
  THREE
} from "../actions/types";

export default function reducer(state = { /* some init state here */ }, action) {
  switch (action.type) {
    case ONE: {
      // this case takes 500ms to finish
      return {...state }
    }
    case TWO: {
       // this case takes 200ms to finish
       return {...state }
    }
    case THREE: {
       // this case takes 100ms to finish
       return {...state }
    }
    default: {
       return {...state }
    }
};
Run Code Online (Sandbox Code Playgroud)

如果我从一个动作中执行以下操作:

dispatch({type: ONE});
dispatch({type: TWO});
dispatch({type: THREE});
Run Code Online (Sandbox Code Playgroud)

他们保证按那个顺序解决吗?意思是,状态是同步的还是“单线程的”?或者case TWO: {},例如,在case ONE: {}完成之前触发?

Tud*_*tin 9

dispatch 默认情况下是同步的,因此,只要您在动作创建者中没有异步调用,它们就会按照声明的顺序执行。

redux 的文档中暗示它dispatch()是同步的:

动作创建者也可以是异步的并且有副作用。您可以在高级教程中阅读有关异步操作的信息,以了解如何处理 AJAX 响应并将操作创建者组合到异步控制流中。