版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
function* cars(action) {
const imposter = yield('hello ' + action);
yield imposter;
}
const c1=cars();
const res1=c1.next();
console.log(res1);
const res2=c1.next('本田');
console.log(res2);
第一次执行 next 方法后,会执行第一个生成器
const imposter = yield('hello ' + action);
yield 的返回值时什么?正常情况下是 undefiend,而 参数 action 有没有传入实参,所以输出结果
但是当第二次调用 next 方法时,如果传入参数,则此参数会成为上面第一次调用 yield 方法的返回值,所以当执行第二个 yield 时,变量 inposter 的值就是传入的参数
如果希望第一次调用 yield 就有值,需要在创建生成器迭代器时传入参数
const c1=cars('丰田');