阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JS generator next()

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

      语法

      gen.next(value)
      

      参数

      value

      向生成器传递的值.

      返回值

      返回的[对象]包含两个属性:

      • done (布尔类型)
        • 如果迭代器超过迭代序列的末尾,则值为 true。 在这种情况下,value可选地指定迭代器的返回值。
        • 如果迭代器能够生成序列中的下一个值,则值为false。 这相当于没有完全指定done属性。
      • value - 迭代器返回的任意的Javascript值。当 done 的值为 true 时可以忽略该值。

      示例

      使用 next()方法

      下面的例子展示了一个简单的生成器, 以及调用 next 后方法的返回值:

      function* gen() { 
        yield 1;
        yield 2;
        yield 3;
      }
      
      var 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 }"
      
      

      向生成器传值

      在此示例中,使用值调用next。 请注意,第一次调用没有记录任何内容,因为生成器最初没有产生任何结果。

      function* gen() {
        while(true) {
          var value = yield null;
          console.log(value);
        }
      }
      
      var g = gen();
      g.next(1); 
      // "{ value: null, done: false }"
      g.next(2); 
      // 2
      // "{ value: null, done: false }"
      
      

      规范

      SpecificationStatusComment
      ECMAScript 2015 (6th Edition, ECMA-262)Generator.prototype.nextStandard初始定义
      ECMAScript Latest Draft (ECMA-262)Generator.prototype.nextDraft草案

      相关链接

      • [function*](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*)
      • Iterators and generators
      目录
      目录