zoukankan      html  css  js  c++  java
  • js中的Generators函数

    js中的Generators函数

    1. generator一般操作

      generator函数的作用就是函数体分段执行,yield表示分隔点
      function *test() {
          console.log(1);
          yield 1;
          console.log(2);
          yield 2;
          console.log(3);
          yield 3;
      }
      
      var g = test();
      
      console.log(g.next())        // { value: 1, done: false }
      console.log(g.return(2))     // { value: 2, done: true },return不执行任何函数体,直接结束函数执行
      console.log(g.next())        // { value: undefined, done: true }
      
    2. 捕获异常

      function *test() {
          try {
              yield 1;
              yield 2;
          } catch (error) {
              console.log(error.message);
          }
      }
      
      var g = test();
      
      console.log(g.next())
      console.log(g.throw(new Error("Error")))  // { value: undefined, done: true } 捕获异常,同时结束函数执行
      console.log(g.next())
      
    3. 传递值给generator函数

      function *test() {
          var s;
          s = yield;
          console.log(s);
          s = yield;
          console.log(s);
      }
      
      var g = test();
      
      g.next();   // 第一次调用next会无视传递的value
      g.next(1);  // 第二次传递value现在才有用
      
    4. yield代理到其他的generator函数

      function *test() {
          yield 1;
          yield *other();
      }
      
      function *other() {
          yield 2;
          yield 3;
      }
      var g = test();
      
      console.log(g.next())  // 1
      console.log(g.next())  // 2
      console.log(g.next())  // 3
      
    5. 遍历generator函数

      function *test() {
          yield 1;
          yield 2;
          yield 3;
      }
      
      for(let item of test()) {
          console.log(item);
      }  // 1 2 3
      
  • 相关阅读:
    ngx-infinite-scroll angular无限滚动插件
    set<Integer> list<Integer>互转
    Linux Tomcat9 catalina.out日志按日期生成
    mysql创建普通用户并且授权
    抽象类
    全角转半角
    异常工具 获取异常信息 log.setExceptionDetail(ThrowableUtil.getStackTrace(e));
    spring RedisTemplate用法
    canvas实现屏幕截图
    Dynamics CRM
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/10350984.html
Copyright © 2011-2022 走看看