function* f(n) {
let step;
while (true) {
step = yield ++n;
if (step) {
n += step;
}
}
}
const iterator = f(0);
console.log(iterator.next().value);
console.log(iterator.next().value);
console.log(iterator.next().value);
console.log(iterator.next().value);
console.log(iterator.next(5).value);
console.log(iterator.next().value);
console.log(iterator.next(12).value);
/*
run:
1
2
3
4
10
11
24
*/