zoukankan      html  css  js  c++  java
  • ES6之genorator和yield使用(迭代器)

    例1:

    function *g(){
        yield 100
        yield 200
        return 300
    }
    let res = g()
    console.log(res);
    console.log(res.next());
    console.log(res.next());
    console.log(res.next());
    console.log(res.next());
    // 输出:
    /*
    Object [Generator] {}
    { value: 100, done: false }
    { value: 200, done: false }
    { value: 300, done: true }
    { value: undefined, done: true }
    */
    

    next方法类似promise .then链式调用
    done属性的值代表是否调用完毕

    例2:

    function* g() {
      yield 100;
      yield 200;
      yield g2();
      return 500;
    }
    
    function* g2() {
      yield 300;
      yield 400;
    }
    
    let res = g();
    console.log(res);
    console.log(res.next());
    console.log(res.next());
    console.log(res.next());
    console.log(res.next());
    console.log(res.next());
    // 输出
    /*
    Object [Generator] {}
    { value: 100, done: false }
    { value: 200, done: false }
    { value: Object [Generator] {}, done: false }
    { value: 500, done: true }
    { value: undefined, done: true }
    */
    

    可以看出,正常情况下,如果在一个迭代器里调用另一个迭代器,返回的是迭代器本身,不会对另一个迭代器遍历
    如果想要调用另一个迭代器进行遍历的话,可以使用 yeild* 修饰这个迭代器:

    function* g() {
      yield 100;
      yield 200;
      yield* g2();
      return 500;
    }
    
    function* g2() {
      yield 300;
      yield 400;
    }
    
    let res = g();
    console.log(res);
    console.log(res.next());
    console.log(res.next());
    console.log(res.next());
    console.log(res.next());
    console.log(res.next());
    console.log(res.next());
    // 输出:
    /*
    Object [Generator] {}
    { value: 100, done: false }
    { value: 200, done: false }
    { value: 300, done: false }
    { value: 400, done: false }
    { value: 500, done: true }
    { value: undefined, done: true }
    */
    
  • 相关阅读:
    flex布局语法
    sqlserver判断text字段是否有数据
    z-index设置后导致遮罩层显示跳动问题
    C# UpdatePanel加载完毕回调JS
    json日期字符串格式化时间
    钉钉考勤机开发需要注意的一个坑
    python bs4 + requests4 简单爬虫
    温故而知新: 关于 js Form 方式提交的一些新认知
    window 环境 Composer 安装 thinkphp5
    百度地图 绘制东莞东城地图示例
  • 原文地址:https://www.cnblogs.com/zoo-x/p/14504540.html
Copyright © 2011-2022 走看看