here is an exciting way of designing a program that I am leaning towards to avoid (or use less of) using "setTimeouts) and rely more on triggered custom events.
I am using node js.
here is a basic example:
const EventEmitter = require('events')
class Game extends EventEmitter{
constructor() {
super();
this.on('start', () => console.log("START"));
this.on('over', () => console.log("GAME OVER!"));
this.on('play', () => console.log("playing ..."))
}
start() {
this.emit('start')
}
gameOver() {
this.emit('over')
}
play() {
this.emit('play')
}
}
class Play {
constructor() {
this.game = new Game()
}
playGame() {
this.game.start();
this.game.play();
}
youLoose() {
this.game.gameOver();
}
}
const play = new Play();
setTimeout(play.youLoose.bind(play), 5000);
play.playGame();
output:
START
playing …
GAME OVER!