xxxxxxxxxx
function* makeRangeIterator(start = 0, end = 100, step = 1) {
let iterationCount = 0;
for (let i = start; i < end; i += step) {
iterationCount++;
yield i;
}
return iterationCount;
}
xxxxxxxxxx
function* g(){ //or function *g(){}
console.log("First");
yield 1;
console.log("second");
yield 2;
console.log("third");
}
let generator=g();
generator.next();
generator.next();
xxxxxxxxxx
function* myGenerator(start = 0, stop = 100, step = 5) {
for (let i = start; i <= stop; i += step) {
yield i;
}
}
for (let v of myGenerator()) {
console.log(v);
}
xxxxxxxxxx
//- With a generator function, values are not evaluated
//until they are needed.
//- Therefore a generator allows us to define a potentially
//infinite data structure.
function* generator() {
yield 1;
yield 2;
yield 3;
}
const gen = generator(); // "Generator { }"
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3
xxxxxxxxxx
// define a generator function
function* generator_function() {
..
}
// creating a generator
const generator_obj = generator_function();
generators javascript
xxxxxxxxxx
function* g(){ //or function *g(){}
console.log("First");
yield 1;
console.log("second");
yield 2;
console.log("third");
}
let generator=g();
generator.next(); // Output First
generator.next(); // Output second
Generators compute their yield ed values on demand, which allows them to efficiently represent sequences that are expensive to compute