JS: Generator
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:
- Use Generator Function to create generator object.
- Code it by hand, by creating a object with
[Symbol.iterator]
and"next"
properties, conforming to their interfaces. This is difficult to do.
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 ]