JavaScript Generator Functions
What is meant by generator Function?
A generator function is a special type of function in JavaScript that allows pausing and resuming its execution during runtime. Generator functions are defined using the function* and they use the yield keyword to pause the function's execution and produce a value.

Basic Syntax of Generator Functions:

- The
function*keyword indicates that this is a generator function. - Inside the generator function body, the
yieldkeyword is used to pause the function and produce a value to the caller. - You can either use
function* generatorFunc() {...}orfunction *generatorFunc(){...}to create them.
Using Generator Functions:
To use a generator function, we need to call it and obtain an iterator object. The iterator object has two essential methods: next() and return(). Let's understand these methods:
The next() Method :
The next() method is used to resume the execution of a generator function from where it was paused. It returns an object with two properties: value and done.
- The
valueproperty contains the value produced by theyieldstatement. - The
doneproperty is a Boolean indicating whether the generator has completed (true) or is still running (false).
Example:

The return() Method:
The return() method allows us to force a generator to complete before it reaches the end. It can take an optional argument that will be returned as the final value of the generator.
Example:

Iterating Over Generator Functions:
Generator functions can also be used to create custom iterators. An iterator is an object that implements the iterator protocol, which requires the presence of a next() method that returns an object with the properties value and done.
Example:

In the above example, the counter() generator function creates an infinite sequence of numbers. We can iterate over this sequence using the next() method of the iterator.