Premium

Event Emitter (Mini Implementation)

By FrontendAtlas Team · Updated Feb 1, 2026

Build a tiny event emitter with on, off, and emit. Store listeners per event, allow multiple listeners, and ensure off removes only the specified handler without breaking others. This tests data structures and event flow. Concepts: async, design-patterns, oop.

What you’ll build / What this tests

This premium javascript coding focuses on Event Emitter (Mini Implementation). You’ll apply async and design-patterns thinking with intermediate level constraints. The prompt emphasizes Build a tiny event emitter with on, off, and emit. Store listeners per event, allow multiple….

Learning goals

  • Translate the prompt into a clear javascript API signature and return shape.
  • Apply async, design-patterns, oop techniques to implement event emitter (mini implementation).
  • Handle intermediate edge cases without sacrificing readability.
  • Reason about time/space complexity and trade-offs in javascript.

Key decisions to discuss

  • Define the exact input/output contract before coding.
  • Choose iteration vs higher-order methods for readability.
  • Decide on concurrency and error propagation behavior.
  • Prioritize predictable edge-case handling over micro-optimizations.

Evaluation rubric

  • Correctness: covers required behaviors and edge cases.
  • Clarity: readable structure and predictable control flow.
  • Complexity: avoids unnecessary work for large inputs.
  • API discipline: no mutation of inputs; returns expected shape.
  • Testability: solution is easy to unit test.

Constraints / Requirements

  • Preserve input order and handle empty arrays safely.
  • Handle async flow without blocking the event loop.
  • Return a Promise and resolve asynchronously without blocking.
  • Handle empty or missing inputs without throwing errors.
  • Keep runtime close to linear time where possible.
  • Prefer a pure function: no side effects beyond the return value.

Mini snippet (usage only)

// Example usage
const input = /* event emitter (mini implementation) input */;
const result = solve(input);
console.log(result);

// Edge case check
const empty = input ?? null;
const fallback = solve(input);
console.log(fallback);

// Expected: describe output shape, not the implementation
// (no solution code in preview)

Common pitfalls

  • Mutating inputs instead of returning a new value.
  • Skipping edge cases like empty input, duplicates, or nulls.
  • Forgetting to await or return the Promise.
  • Overlooking time complexity for large inputs.

Related questions

Upgrade to FrontendAtlas Premium to unlock this challenge. Already upgraded? Sign in to continue.