javascript-state-machine文档翻译06:初始化可选项

本文档详细阐述了状态机的显式和隐式初始化转换动作。显式初始化需通过调用转换动作如'init()',而隐式初始化则在指定初始状态时自动触发。这两种方法都在状态机构建时影响其从'none'状态到目标状态的过渡,常见于状态机设计和应用中。
摘要由CSDN通过智能技术生成

显式的指定初始转换动作

默认情况下,如果未指定初始状态,状态机将处于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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值