跳转到内容

setTimeout 定时器

把原生 setTimeout 包装成状态机:ON 期间等待,触发后回到 OFF

状态图

stateDiagram-v2
[*] --> starting : start
starting --> on : start 🟢
starting --> [*] : start 🔴
on --> timeouting : timeout
timeouting --> off : timeout 🟢
timeouting --> on : timeout 🔴

关键点

  • @ChangeState([FSM.INIT, FSM.OFF], FSM.ON) — 从初始或关闭状态启动
  • @ChangeState(FSM.ON, FSM.OFF) — 定时器触发后回到 OFF
  • @ChangeState([], FSM.INIT)stop() 从任意状态重置

与原版差异

本示例对应 afsm/fsms/setTimeout.ts,原版还提供 reset(ms) 方法(先 stop 再 start)。