changeTo方法用于将状态机的当前状态转换为指定状态。该方法可以被任何状态调用,且只会在调用时才会产生状态转换。该方法的执行遵循以下规则:
exit
方法;enter
方法;stateMachine.changeTo(newState);
newState
:新的状态。该参数可以是状态机中已经定义过的状态,也可以是一个新的状态。如果该参数为状态机中未定义过的状态,则会自动添加该状态到状态机中。// 定义状态机
let stateMachine = new StateMachine({
init: 'idle',
transitions: [
{ name: 'start', from: 'idle', to: 'running' },
{ name: 'complete', from: 'running', to: 'finished' },
{ name: 'reset', from: ['running', 'finished'], to: 'idle' }
],
methods: {
onEnterRunning: function() {
console.log('已进入running状态');
},
onEnterFinished: function() {
console.log('已进入finished状态');
}
}
});
stateMachine.changeTo('running');
// 输出:已进入running状态
stateMachine.changeTo('finished');
// 输出:已进入finished状态
如果在调用changeTo
方法时发生以下情况之一,则会抛出异常:
newState
参数为undefined
;newState
参数表示的状态未定义;