[Javascript] Create a State Machine with a Generator

Since generators can take initial values and expose a next method which can run updates on the initial value, it becomes trivial to make a state machine with a generator where you pass your transitions into the next method. This lesson walks through creating a state machine with a generator.

function* stateMachine(initState: number) {
    let action;
    while (true) {
        

        if (action === 'increase') { 
            initState++;
        }

        if (action === 'decrease') {
            initState--;
        }

        action = yield initState;
    }
    
}

let state = stateMachine(0);
console.log(state.next()); // trigger the init state {value: 0, done: false}
console.log(state.next('increase')); // {value: 1, done: false}
console.log(state.next('increase')); // {value: 2, done: false}
console.log(state.next('decrease')); // {value: 1, done: false}
原文地址:https://www.cnblogs.com/Answer1215/p/12167593.html