zoukankan      html  css  js  c++  java
  • 【JavaScript】Generator

    以下内容为学习记录,可以参考 MDN 原文。

    环境

    • node v12.18.1
    • npm 6.14.5
    • vscode 1.46
    • Microsoft Edge 83

    概念

    生成器对象是由一个 generator function 返回的,并且它符合可迭代协议和迭代器协议。

    语法

    function* gen() { 
      yield 1;
      yield 2;
      yield 3;
    }
    
    let g = gen(); 
    // "Generator { }"
    

    方法

    next

    next() 方法返回一个包含属性 done 和 value 的对象。该方法也可以通过接受一个参数用以向生成器传值。

    function* gen() { 
      yield 1;
      yield 2;
      yield 3;
    }
    
    const g = gen(); // "Generator { }"
    g.next();      // "Object { value: 1, done: false }"
    g.next();      // "Object { value: 2, done: false }"
    g.next();      // "Object { value: 3, done: false }"
    g.next();      // "Object { value: undefined, done: true }"
    

    return

    return() 方法返回给定的值并结束生成器。

    function* gen() { 
      yield 1;
      yield 2;
      yield 3;
    }
    
    var g = gen();
    
    g.next();        // { value: 1, done: false }
    g.return("foo"); // { value: "foo", done: true }
    g.next();        // { value: undefined, done: true }
    

    throw

    throw() 方法用来向生成器抛出异常,并恢复生成器的执行,返回带有 done 及 value 两个属性的对象。

    function* gen() {
      while(true) {
        try {
           yield 42;
        } catch(e) {
          console.log("Error caught!");
        }
      }
    }
    
    var g = gen();
    g.next(); // { value: 42, done: false }
    g.throw(new Error("Something went wrong")); // "Error caught!"
    
  • 相关阅读:
    函数声明例子
    税收工资分级
    attribute函数
    输出结果有误
    scanf_s()函数与数组,运行环境VS2013
    格式化输出
    功能点介绍和用户场景
    第二次作业合作版
    word count
    第一次作业
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/13659326.html
Copyright © 2011-2022 走看看