2021-04-27
2239
#vanilla javascript
Felix Gerschau
45401
Apr 27, 2021 â‹… 7 min read

JavaScript iterators and generators: A complete guide

Felix Gerschau Felix is a frontend developer at Fitogram in Cologne, Germany.

Recent posts:

how to use the Interest Invoker API for better, more accessible UX

How to use the Interest Invoker API for better, more accessible UX

Explore how to use Google’s new experimental Interest Invoker API for delays, popovers, and smarter hover UX.

Emmanuel John
Jun 19, 2025 â‹… 7 min read
How To Build And Deploy A Web App With Bolt.new

How to build and deploy a web app with Bolt

Bolt.new revolutionizes how you build and deploy web apps with no-code development and seamless AI integration.

Isaac Okoro
Jun 19, 2025 â‹… 8 min read
how to get the most out of Cursor

Frontend devs: Here’s how to get the most out of Cursor

Learn how to get the most out of Cursor AI — one of the hottest tools in AI-assisted coding, with practical workflows and underrated features.

Isaac Okoro
Jun 18, 2025 â‹… 5 min read
When to Use OpenAI vs. Open Source LLMs LogRocket

When to use OpenAI vs. open source LLMs in production

Learn about OpenAI vs open source LLMs for frontend devs, with an integration guide, costs, performance comparison, and implementation tips.

Clara Ekekenta
Jun 17, 2025 â‹… 6 min read
View all posts

5 Replies to "JavaScript iterators and generators: A complete guide"

  1. Nice article. I was a little confused by the output shown for the `throw` example, so I tried running a modified version it in the browser.

    “`
    function* errorGenerator() {
    try {
    yield ‘one’;
    yield ‘two’;
    } catch(e) {
    console.error(e);
    }
    yield ‘three’;
    yield ‘four’;
    }

    const errorIterator = errorGenerator();

    console.log(errorIterator.next()); // outputs “{ value: ‘one’, done: false }”
    console.log(errorIterator.throw(‘Bam!’)); // outputs “Bam!” AND “{ value: ‘three’, done: false }”
    console.log(errorIterator.next()); // outputs “{ value: ‘four’, done: false }”
    console.log(errorIterator.next()); // outputs “{ value: undefined, done: true }”
    “`

    It appears that the throw doesn’t actually end the generator, but rather simulate an exception thrown, which is caught by the catch block, then continues the rest of the function normally.

Leave a Reply