To define a generator function, you use the function*
keyword followed by the function name. Inside the function, you can use the yield
keyword to pause the execution and return a value. When the generator function is invoked, it doesn’t actually run the code immediately. Instead, it returns a generator object, which can be used to control the execution.
Here’s an example that demonstrates how generator functions work:
function* generateNumbers() {
yield 1;
yield 2;
yield 3;
}
const generator = generateNumbers();
console.log(generator.next()); // { value: 1, done: false }
console.log(generator.next()); // { value: 2, done: false }
console.log(generator.next()); // { value: 3, done: false }
console.log(generator.next()); // { value: undefined, done: true }
In this example, we define a generator function called generateNumbers()
. Inside the function, we use the yield
keyword to return values sequentially. When we invoke generateNumbers()
and assign it to the generator
variable, it returns a generator object. We can then use the next()
method to resume the execution and get the next value in the sequence.
The next()
method returns an object with two properties: value
and done
. The value
property contains the value yielded by the generator, while the done
property indicates whether the generator has finished iterating.
Generator functions provide a convenient way to create iterators in JavaScript. They allow you to control the flow of data using the yield
keyword and can greatly simplify asynchronous programming tasks. So next time you need to create an iterator, give generator functions a try!
#JavaScript #Generators