zoukankan      html  css  js  c++  java
  • 一个例子理解ES6的yield关键字

    yield是什么

      yield是ES6的新关键字,使函数暂停执行。

    一个简单例子

      function *countASb() {
        console.log('Show0:');
        var a1 = yield console.log(1);
        console.log('Show1:',a1);
        var a2 = yield console.log(2);
        console.log('Show2:',a2);
        var a3 = yield console.log(3);
        console.log('Show3:',a3);
        var a4 = yield console.log(4);
        console.log('Show4:',a4);
        console.log('show:End');
      }
      var mArs = countASb(0);
      mArs.next('a1');
      mArs.next('a2');
      mArs.next('a3');
      mArs.next('a4');
      mArs.next('a5');

    输出:

    Show0:
    1
    Show1: a2
    2
    Show2: a3
    3
    Show3: a4
    4
    Show4: a5
    show:End

    很容易理解的几个点:

    • yield可以认为是暂停点。在执行generator函数的时候,在yield处会暂停。
    • 执行next,会从一个yield暂停点执行到下一个yield暂停点
    • (重点)next中的参数,会以上一个yield整体做为返回结果,参与执行。因此show1的结果是a2
  • 相关阅读:
    16.什么是面向对象编程?
    15.运动
    14.this指向和ES6常用内容
    13.正则表达式
    12.事件模型
    11.event事件对象
    10.BOM
    9.DOM
    拓扑排序学习(复习)笔记
    [Luogu] P1987 摇钱树
  • 原文地址:https://www.cnblogs.com/otio/p/10190672.html
Copyright © 2011-2022 走看看