Generators — Complete Guide
Generators — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of JavaScript Tutorial on Toolliyo Academy.
On this page
JavaScript Tutorial · Lesson 30 of 100
Generators
Basics ✓ → Objects & data → Async & DOM → Advanced → Tools → Projects
Intermediate · 2 — Built-in types & objects · ~6 min · JS Objects & Collections
What is this?
Generator functions (function*) can pause and resume with yield. They produce values one at a time lazily.
Why should you care?
Useful for infinite sequences, paging data, or readable custom iterators.
See it live — copy this example
Paste into an HTML file or the browser console (F12). Use Run below when the live editor is available.
function* countUp(max) {
for (let i = 1; i <= max; i++) yield i;
}
for (const n of countUp(3)) console.log(n);
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- yield sends a value out and pauses.
- The for...of loop resumes until done.
Practice next
- Run countUp with for...of.
- Manual gen.next() until done is true.
- Compare memory vs building a huge array.
- Write function* idGenerator() that yields incrementing IDs forever.
- Pause a generator mid-loop and resume later with next().
Remember
function* syntax yield pauses execution Iterable with for...of
ScriptVerse infinite scroll
A generator fetches the next page of transactions on each yield, feeding a list as the user scrolls.
Outcome: Generators simplify lazy pagination compared to manual page counters everywhere.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!