• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • Generator.prototype.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 }"