Generators

  • Generators are the function that can be paused and resumed

  • Defined using * after function keyword

  • yield to pause a generatore optionally pass back some value

  • are used with iterators

  • return an iterator when invoked

  • next() method resume generator

  • can pass value to iterator using next('my value')

Note

we have to install "babel-polyfill" to use this feature with webpack

// in webpack.config.js add below entry
// entry: ['babel-polyfill', './main.js'],

Generator Demo

function* generateMe(){
    yield "One";
    yield "Two";
    yield [1,2,3];
}

var generator = generateMe();
console.log(generator.next());
console.log(generator.next());
console.log(generator.next());
console.log(generator.next());

// Output
// { value="One",  done=false}
// { value="Two",  done=false}
// { value=[3],  done=false}
// { done=true,  value=undefined}

Use generator for dependent API calls

/search/man -> /users/123 -> /photos/233

Loop over generators ( use for of loop )

Demo - Now i know my abc

Last updated

Was this helpful?