loombo-programming
v1.0.3
Published
~~~
Downloads
16
Readme
loombo web程序设计
StateMachine 状态机
1:定义状态
class LoadingState extends State {
enter() {
super.enter();
console.log('进入加载状态')
}
handleMsg(msg: Message): boolean {
super.handleMsg(msg)
console.log(msg)
return true;
}
processMessage(msg: Message): boolean {
console.log(msg)
return true;
}
exit() {
super.exit();
console.log('加载状态结束了')
}
}
class RunningState extends State {
enter() {
super.enter();
console.log('页面准备好了')
}
processMessage(msg: Message): boolean {
console.log(msg)
return !!msg.what
}
exit() {
super.exit();
console.log('页面状态不Ok')
}
}
2,实例化状态机,并挂载状态
let webMachine = new StateMachine()
let loadState = new LoadingState()
let runningState = new RunningState()
webMachine.addState(loadState, undefined)
webMachine.addState(runningState, undefined)
//设置初始状态
webMachine.setInitialState(loadState)
3,启动状态机,控制状态切换
webMachine.start()
webMachine.transitionTo(runningState)
webMachine.sendMessage(new Message("离开前处理的消息", {type: 'asd'}))
webMachine.transitionTo(loadState)
webMachine.deferMessage(new Message('进入状态后执行的消息', {type: 'asd'}))
webMachine.deferMessage(new Message("进入状态后执行的消息", {type: 'asd'}))
webMachine.sendMessage(new Message('离开状态前执行的消息', {type: 'asd'}))
webMachine.transitionTo(runningState)
webMachine.sendMessage(new Message("离开状态前执行的消息", {type: 'asd'}))