协程的运行 协程A执行协程A执行到一半,执行权交给BB一段时间(获取结果)交还执行权协程A恢复执行 Generator函数 例子1 const test = function*(x) { const a = 2 * (yield x + 2); const b = 3 * (yield a / 3); const c = yield b * 3; return a + b + c; }; const a = test(1); console.log(a.next()); //3 =x+2=3 console.log(a.next(11)); // 22/3 =2*11/3 console.log(a.next(2)); // 18=3*2*3 console.log(a.next(3)); //31 a+b+c=2*11+3*2+3=31 next参数值是上一步yield的值。 例子2 nction* gen(x){ var y = yield x + 2; return y; } const g=gen(1) g.next() // {value:3,done:false} g.next(2)//{value:2,done:true} g.next() //{value:undefined,done:true} 第一个next方法value属性,返回表达式x+2的值。第二个next带有参数2,这个参数可以传入Generator函数,作为上阶段异步任务的返回结果,被y接受,因而value返回2(变量y的值)