我正在尝试找到有关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: {}
完成之前触发吗?
答案 0 :(得分:4)
dispatch
是同步的,因此,只要您在操作创建者中没有异步调用,它们就会按照声明的顺序执行。
在redux's docs中暗示dispatch()
是同步的:
动作创建者也可以是异步的并且有副作用。您 可以阅读高级教程中的异步操作以了解如何操作 处理AJAX响应并将动作创建者组合成异步控件 流动。