Generators Pattern

Learn how to create a simple generator function, pass values back to a generator, and use a generator in place of a standard iterator.

The ES2015 specification introduced a syntax construct that’s closely related to iterators. We’re talking about generators, also known as semicoroutines. They’re a generalization of standard functions, in which there can be different entry points. In a standard function, we can have only one entry point, which corresponds to the invocation of the function itself, but a generator can be suspended (using the yield statement) and then resumed at a later time. Among other things, generators are very well suited to implement iterators, in fact, as we’ll see in a bit, the generator object returned by a generator function is indeed both an iterator and an iterable.

Generators in theory

To define a generator function, we need to use the function* declaration (the function keyword followed by an asterisk).

Get hands-on with 1200+ tech skills courses.