我正在使用Stately.js状态机来获取node.js
https://github.com/fschaefer/Stately.js/
我从一个简单的例子开始。
var fsm = Stately.machine({
'START': {
// event: function () {
// }
},
'NEXT_STATE': {
// event: function () {
// }
},
});
fsm.setMachineState(fsm.NEXT_STATE);
我收到错误TypeError: fsm.setMachineState is not a function
。有什么不对?
答案 0 :(得分:2)
您无法从状态机外部更改状态。您需要将当前状态的事件更改为其他状态。
答案 1 :(得分:1)
我找到了一些 hacky解决方案,允许您在状态机中更改this
引用之外的状态,以防您不想更改fsm库。
您可以定义自己的功能
,而不是正常的状态转换将此功能添加到每个州
'setState': function(stateName){
return this[stateName]
}
现在您的状态将如下所示,现在可以从状态机外部设置状态
var fsm = Stately.machine({
'START': {
'do_something': /* => */ 'NEXT_STATE',
'setState': function(stateName){
return this[stateName]
}
},
'NEXT_STATE': {
'setState': function(stateName){
return this[stateName]
}
},
});
fsm.setState('YOUR_STATE_NAME');