发表于: 2017-05-14 23:06:42
1 886
今天完成的任务:
写了task4的样式
学习了有限状态机。
明天计划的任务:
继续写task4 的逻辑
遇到的问题:
暂无
收获:
有限状态自动机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
它有三个特征:
a, 状态总数(state)是有限的。
b,任一时刻,只处在一种状态之中。
c, 某种条件下,会从一种状态转变(transition)到另一种状态。
使用到js中,可使js的结构更清晰,降低js的复杂度。
我们可以使用javascript-state-machine库来实现有限状态机
它接收4种回调函数:
onbeforeEVENT_NAME - 在EVENT_NAME对应的行为发生之前触发
onleaveSTATE - 在要改变STATE对应的状态时触发
onenterSTATE - 在把当前状态设置为了STATE对应的状态时触发
onafterEVENT_NAME - 在EVENT_NAME对应的行为发生之后触发
如例,表现一个人的饥饿状态:
var fsm = StateMachine.create({
//初始值
initial: 'hungry',
//事件
events: [
{name: 'eat', from: 'hungry', to: 'satisfied'},
{name: 'eat', from: 'satisfied', to: 'full'},
{name: 'eat', from: 'full', to: 'sick'},
{name: 'rest', from: ['hungry', 'satisfied', 'full', 'sick'], to: 'hungry'},
],
//回调
callbacks: {
onbeforeeat: function(event, from, to) {
console.log('马上吃东西了');
},
onleavehungry: function(event, from, to) {
console.log('终于没那么饿了');
},
onentersatisfied: function(event, from, to) {
console.log('真开心');
},
onaftereat: function(event, from, to) {
console.log('我吃地差不多了');
}
}
});
// console.log('fsm初始化完毕!');
fsm.eat();
控制台输出为:
马上吃东西了
终于没那么饿了
真开心
我吃地差不多了
评论