保证派遣序列

时间:2017-04-03 15:17:01

标签: reactjs synchronization redux react-redux redux-thunk

我正在尝试找到有关redux reducer的内容,但我认为术语可能有所不同,因为这是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 }
    }
};

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

dispatch({type: ONE});
dispatch({type: TWO});
dispatch({type: THREE});

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

1 个答案:

答案 0 :(得分:4)

默认情况下,

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

redux's docs中暗示dispatch()是同步的:

  

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