JS: Generator

By Xah Lee. Date: . Last updated: .

New in JS2015.

What is Generator

Generator object is a object that conforms to both the Iterator interface and Iterable interface. 〔see Interface

Basically it means, it is an Iterable Object and also can be used as an Iterator .

Create Generator

To create a generator:

Write Generator Manually

// create a iterator. it yields from 0 to 8.
const xiter = {};
xiter.i = 0;
xiter.next =
  () => ((xiter.i < 9)
    ? { value: xiter.i++, done: false }
    : { value: undefined, done: true });

// create a generator
const xgen = {
  // add a Symbol.iterator property, so it conforms iterable interface
  [Symbol.iterator]: (() => xiter),
  // add a next property, so it conforms iterator interface
  next: xiter.next,
};

// HHHH------------------------------

// test it as a iterator
// call generator object by using the next() method
console.log(xgen.next());
// { value: 0, done: false }

console.log(xgen.next());
// { value: 1, done: false }

console.log(xgen.next());
// { value: 2, done: false }

// test it as a iterable
console.log([...xgen]);
// [ 3, 4, 5, 6, 7, 8 ]

Create Generator by Generator Function

JavaScript, Iterable