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 }
    */
    
  • 相关阅读:
    信息安全算法
    另类装载问题
    分治法快速排序
    动态规划最长公共子序列
    java网络编程1
    Jndi和会话bean
    EJB初探
    JSF初探
    简单计算器
    关于坐火车
  • 原文地址:https://www.cnblogs.com/zoo-x/p/14504540.html
Copyright © 2011-2022 走看看