显式的指定初始转换动作
默认情况下,如果未指定初始状态,状态机将处于none状态,在构建过程中不会触发任何生命周期事件,你需要提供一个明确的转换动作来退出这个状态
var fsm = new StateMachine({
transitions: [
{ name: 'init', from: 'none', to: 'A' },
{ name: 'step', from: 'A', to: 'B' },
{ name: 'step', from: 'B', to: 'C' }
]
});
fsm.state; // 'none'
fsm.init(); // 显示的触发'init()'转换动作
fsm.state; // 'A'
隐式的指定初始化转换动作
如果你指定初始状态的名称(如本文档中的大多数示例所示),则创建了隐式init转换动作,它及相关的生命周期事件会在构建状态机时触发。
这是最常见的初始化策略,90%的情况下你应该使用。
var fsm = new StateMachine({
init: 'A',
transitions: [
{ name: 'step', from: 'A', to: 'B' },
{ name: 'step', from: 'B', to: 'C' }
]
}); // 在构建期间'init()'转换动作被触发:从'none'转换到'A'
fsm.state; // 'A'
初始化和状态机工厂
状态机工厂的每个构造实例都会触发init
转换动作。
var FSM = StateMachine.factory({
init: 'A',
transitions: [
{ name: 'step', from: 'A', to: 'B' },
{ name: 'step', from: 'B', to: 'C' }
]
});
var fsm1 = new FSM(), // fsm1中'init()'转换动作被触发:从'none'转换到'A'
fsm2 = new FSM(); // fsm2中'init()'转换动作被触发:从'none'转换到'A'