• 【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!"
    
  • 相关阅读:
    se 键盘鼠标操作事件
    警告框操作方法(alert弹窗)
    se自带截图方法
    CSS Selector 高级用法
    吃奶酪
    互不侵犯
    hdu1102
    P4744 Iron man
    玉米田
    状压dp题单
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/13659326.html
Copyright © 2020-2023  润新知