- next()返回的是 yield后面的执行式的值+是否已经遍历完
是一个object:{value: xxx, done: false}
value:yield后面的执行式的值 - next()中传的参数代表上一个yield后面执行式的替代 ,所有第一次next不用传参(但是第一次执行next就是执行第一个yield)
- yield执行完成就停止之后的任何操作,下一次next继续上一次执行结束的后续
- yield后面的执行式需要放在()中
- next不能在if语句中,因为会执行
function *foo() {
yield 1;
yield 2;
yield 3;
return;
}
for(let v of foo()) {
console.log(v);
}
结果是1,2,3,underfind
for...of在遍历foo()返回的结果时,每遇到一个yield,就把yield后面表达式的结果作为of前面的v的值进行赋值(next()返回值的value字段)
具体的可以看看吧,这边只是一个简单的总结