Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const state = faste()
- .withPhases(['red', 'yellow', 'green'])
- .withMessages(['tick','next'])
- .on('tick',['green'], ({transit}) => transit('yellow'))
- .on('tick',['yellow'], ({transit}) => transit('red'))
- .on('tick',['red'], ({transit}) => transit('green'))
- // just rethrow next as tick
- .on('next',[], ({trigger}) => trigger('tick'))
- .on('@enter',['green'], ({setState, attrs, trigger}) => setState({
- // timer "ticks" by "tick", as it should
- interval: setInterval(() => trigger('next'), attrs.duration)
- }))
- .on('@leave',['red'], ({state}) => clearInterval(state.interval))
- state
- .create()
- .attrs({duration: 1000})
- .start('green');
Add Comment
Please, Sign In to add comment