Memoize with configurable cache keys
Cache results without confusing falsy values, argument identity, serialization, promise failures, or invalidation policy.
- Maps
- Identity
- Caching
Ten guided tasks for practicing closures, identity, object graphs, events, asynchronous coordination, caching, and the trade-offs expected in senior frontend interviews.
Each walkthrough will begin with a finishable implementation, then add correctness and production requirements without hiding the language mechanics behind a library.
The roadmap progresses from function wrappers and structural data to asynchronous orchestration and stateful data structures. Articles will become clickable as they are published.
Build debounce from its closure and timer model, then preserve arguments, dynamic this, cancellation, and explicit flush behavior.
Limit execution frequency while retaining the latest call and making leading, trailing, and cancellation semantics explicit.
Cache results without confusing falsy values, argument identity, serialization, promise failures, or invalidation policy.
Clone recursive data while handling circular references and explaining prototypes, descriptors, built-ins, and structuredClone.
Compare nested values with deliberate primitive semantics, own-key handling, circular-pair tracking, and clear scope boundaries.
Design on, off, once, and emit while preserving listener order and defining mutation, errors, and reentrancy during emission.
Coordinate an iterable of values and promises while preserving input order, handling empty input, and rejecting predictably.
Schedule asynchronous task functions under a strict concurrency limit with ordered results and an explicit failure policy.
Retry only eligible asynchronous failures with bounded delays, cancellation, deadlines, jitter, and idempotency reasoning.
Maintain recency and fixed capacity with efficient reads, updates, and eviction using Map or a hash map plus linked list.