Docs

相关资料

var g = gen(); console.log(g.next()); console.log(g.next(1)); console.log(g.next()); console.log(g.next(2));

  1. - gen 内是死循环,next() 永不 done
  2. - 执行过程
  3. - g.next():输出 { value: null, done: false }
  4. - g.next(1): 流程返回 gen 内,1 为整个 yield 语句的返回值,即 var value = 1,输出 1
  5. - g.next(): 输出 { value: null, done: false }
  6. - g.next(2): 流程再次返回到 gen 内,2 位整个 yield 语句的返回值,即 var value = 2,输出 2
  7. - 结束
  8. <a name="Pv2ux"></a>
  9. # Case 2
  10. ```typescript
  11. function* gen() {
  12. while(true) {
  13. var value = yield null;
  14. console.log(value);
  15. }
  16. }
  17. var g = gen();
  18. console.log(g.next(1));
  19. console.log(g.next(2));
  • 与 case 1 是有区别的,这个例子是输出不了 1 的
  • 执行过程
    • g.next(1): 输出 { value: null, done: false }
    • g.next(2): 流程返回 gen 内,2 为整个 yield 语句的返回值,即 var value = 2,输出 2
    • 结束
  • 这里第一步 g.next(1) 的传值 1 是没有意义的,是在接收 yield 返回给 next() 的过程

Case 3

截屏2022-01-07 下午4.25.40.png

Case 4

截屏2022-01-07 下午4.26.55.png