function* createGenerator() {
let first = yield 1;
let second = yield first + 2;
yield second + 3;
}
let iterator = createGenerator();
iterator.next(); // { value: 1, done: false}
iterator.next(4);// { value: 6, done: false}
iterator.next(5);// { value: 8, done: false}
iterator.next(); // { value: undefined, done false}
- 传给
next()
方法的参数会替代上一次yield
的返回值.
- 在一个含参的
yield
语句中, 表达式右侧等价于第一次调用next()
返回后的下一个返回值, 表达式左侧等价于第二次调用next()
方法后, 在函数继续执行前得到的返回值.
调用代码 |
对应函数内部执行代码 |
next() |
yield 1 |
next(4) |
let first = yield 1 yield first + 2 |
next(5) |
let second = yield first + 2 yield second + 3 |