By Alligator
With generator functions in ES2015 (ES6), we’re now able to define functions that can return multiple values with the help of the yield keyword. Here’s an example of a simple generator function:
function* someGenerator(){
yield 'Cats';
yield 'Dogs';
yield 'Birds';
}
Notice the use of the * character next to the function keyword, to indicate that it’s a generator function.
Now let’s create an instance of the generator and extract the values from it by calling next() on the generator and getting value:
const gen = someGenerator();
console.log(gen.next().value); // Cats
console.log(gen.next().value); // Dogs
console.log(gen.next().value); // Birds
console.log(gen.next().value); // Undefined
next() returns an object with the value and a boolean called done that returns true if the generator is out of values:
const gen2 = someGenerator();
console.log(gen2.next().done); // false
console.log(gen2.next().done); // false
console.log(gen2.next().done); // false
console.log(gen2.next().done); // true
You can use an infinite while in a generator function to create a function that will generate a new ID every time next() is called on it. In this case the infinite loop is not dangerous because it will only execute once with calls to next():
function* idGen(){
let i = 0;
while (true) {
yield ++i;
}
}
const myIdGen = idGen();
console.log(myIdGen.next().value); // 1
console.log(myIdGen.next().value); // 2
console.log(myIdGen.next().value); // 3
console.log(myIdGen.next().value); // 4
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Alligator.io is a developer-focused resource that offers tutorials and insights on a wide range of modern front-end technologies, including Angular 2+, Vue.js, React, TypeScript, Ionic, and JavaScript.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.