@zhupengji/z-fsm
v1.0.0
Published
z-fsm is a simple fsm(Finite State Machine) lib.
Readme
z-fsm
z-fsm is a simple fsm(Finite State Machine) lib.
import { FiniteStateMachine } from "./z-fsm/fsm";
const fsm = new FiniteStateMachine("init", {
init: {
birth: "baby",
die: "dead",
},
baby: {
growup: "adult",
die: "dead",
},
adult: {
die: "dead",
},
dead: {
relive: "baby",
},
});
fsm.subscribe((ctx) => {
console.log(ctx.state, ctx.action, ctx.nextState, ctx.actionState);
});
fsm.send("birth").then(
() => console.log(fsm.currentState) // "baby"
);
fsm.send("growup", function guard() {
return new Promise((resolve) => {
setTimeout(() => resolve(true), 1000);
});
});
fsm.send("study"); // Locked
fsm.stop();
fsm.send("growup"); // child