DEV Community

shadowtime2000
shadowtime2000

Posted on • Originally published at h.shadowtime2000.com on

What are JS Generators?

What are JS Generators?

Generators are a feature in Javascript which are basically functions that are kind of like iterators.

Creating

You can create generators like this:

function* myGenerator() {}
Enter fullscreen mode Exit fullscreen mode

The * after function is required.

Yielding

The core mechanic of generators is yielding values.

function* myGenerator() {
    yield 1;
    yield "foo";
    yield "bar";
    yield { thing: true };
}
Enter fullscreen mode Exit fullscreen mode

Taking Values

You have created your generator. Now, we need to use it. When you have a generator, you can call .next() on it, and it will run the generator until it reaches a yield statement. When it reaches it, it will return an object with two parameters, value, and done.

const one = myGenerator.next().value; // 1
const foo = myGenerator.next().value; // "foo"
const bar = myGenerator.next().value; // "bar"
const thingTrue = myGenerator.next().value; // { thing: true }
Enter fullscreen mode Exit fullscreen mode

MDN Docs

You can look more into generators on the MDN docs.

Discussion (2)

Collapse
monfernape profile image
Usman Khalil

What are common use cases for generators?

Collapse
shadowtime2000 profile image
shadowtime2000 Author

I think mainly they are for creating more readable iterators.