TGViewer
JavaScript JavaScript @javascript · 31.1K subscribers
Post #2599 4.1K
CHALLENGE

class StateMachine {
constructor() {
this.state = 'idle';
this.transitions = {
idle: { start: 'running' },
running: { pause: 'paused', stop: 'idle' },
paused: { resume: 'running', stop: 'idle' }
};
}

transition(action) {
const validTransitions = this.transitions[this.state];
if (validTransitions && validTransitions[action]) {
this.state = validTransitions[action];
return true;
}
return false;
}
}

const machine = new StateMachine();
console.log(machine.transition('pause'));
console.log(machine.state);
console.log(machine.transition('start'));
console.log(machine.state);
  • 🤩 2
  • ❤ 1
  • 👍 1
More from @javascript
  1. Oct 4, 2026👀 Size Limit: A JavaScript Performance Budgeting Tool Set a size or load-time budget for…
  2. Oct 4, 2026Post #3536
  3. Oct 4, 2026CHALLENGE const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args))); co…
  4. Oct 3, 2026🤩 The Grand Unifying Architecture of Frontend SolidJS's creator argues that HTMX, React,…
  5. Oct 2, 2026😮 How Anthropic Made Claude's Apps 3x Faster in Two Weeks A grab bag of performance lesso…
  6. Oct 2, 2026Post #3532
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →