什么是生成器函数:
在函数后面添加*号,这个函数就变成了生成器函数,例如
<script>
function* gen() {
let a = yield 10;
let b = yield 20;
let c = yield 30;
}
console.log(gen());
</script>
打印的结果:
generator函数的执行顺序
<script>
function* gen() {
let a = yield 10;
console.log(a);
let b = yield 20;
console.log(b);
let c = yield 30;
console.log(c);
}
let it = gen()
console.log(it.next(1));
console.log(it.next(2));
console.log(it.next(3));
</script>
打印结果
第一次执行 it.next 会返回 {value:10,done:false}
第二次执行 it.next 会返回 2和 {value:10,done:false} 会把 next(2)的值传给上一次的yield
............
知道为{value:undefined done:false} 停止迭代