function * gen(){
yield 111;
yield 222;
yield 333;
}
//执行获取迭代器对象
let iterator = gen();
iterator.next();

参数传递:

function * gen(arg){ //arg为形参
console.log(arg);
yield 111;
yield 222;
yield 333;
}
let iterator = gen(‘aaa’); //在这里传入实参aaa
console.log(iterator.next()); //这里打印第一次的执行结果是
image.png

next方法传递实参:第n次next方法传入实参,将作为第n-1个yield语句返回的结果

function gen(arg){ //arg为形参
console.log(arg);
//这里定义第一个yield语句的结果
let one = yield 111;
console.log(one)
yield 222;
yield 333;
}
let iterator = gen(‘aaa’); //在这里传入实参aaa
console.log(iterator.next()); //这里打印第一次的执行结果是
console.log(iterator.next(‘bbb’)); //这里打印第二次的执行结果,并且传入一个参数。
注意:*第二次调用函数时传进去的实参,是作为第一个yield语句的结果的。

image.png