1.0.2 • Published 4 years ago
@followwinter/state-machine v1.0.2
state-machine
状态机,编排复杂业务流程的
特性
- 配置化,让业务流程更加清晰可见,代码即业务
- 分离原子任务和流程控制器,更加彻底的 DIY,方便 Unit Test
使用方式
- 引入
npm install @followwinter/state-machine
- 配置
const taskA = ()=>{return 'payloadFromA'}
const taskB = (payload)=>{console.log(payload)}
const stateMachine = new StateMachine({
'A': {
task: taskA,
next: 'B'
},
'B': {
task: taskB,
}
})
stateMachine.run('A', 'initialPayload') // 输出 payloadFromA
API
StateMachine
:constructor(config, name): StateMachine
- 构造一个状态机config: object
- 状态机配置,key 为状态,value 是 Taskname: string
- 状态机名称,如果不需要可以不用
run(state, payload): void
- 指定初始状态和负载执行状态机state: string
- 初始状态payload: object
- 负载
Task
:task: function
- 该状态的任务,可以返回 promise 或者任意值next: string | function | object
- 下一个任务的状态转化器,可以有以下三种类型:string
:直接指定状态function
:将任务的执行结果作为入参数,该函数的声明如下:- function(prePayload: object): {state: string, payload: object}
object
: 将任务执行的结果作为 key,在该对象中查找,将命中的 value 作为下一个状态。