生命不息,学习不止

js中的Generator和yield

Generator函数的用法很简单,就是在函数后面加上一个*号即可

let go = function* (x) {
  yield x+1;
  yield x+2;
  yield x+3;
  return x;
}

var g = go(10);

console.log(g.next()); // { value: 11, done: false }
console.log(g.next()); // { value: 12, done: false }
console.log(g.next()); // { value: 13, done: false }
console.log(g.next()); // { value: 10, done: true }

知识点:

  1. 直接执行函数是不会有反应的,需要执行next()方法才可以执行内部的代码,并且按照顺序返回结果。
  2. 箭头函数不能作为Generator函数使用,只能使用function创建Generator函数。
  3. 值得注意的是,yield是无法赋值给yield前面的变量的,var a = yield x+1这种写法是无效的,如果需要赋值的话需要在下一次next时将参数传进去,这个参数将会作为上一次的yield的返回值赋值到变量上。
    let go = function* () {
      var a = yield 1;
      return a + 100;
    }
    
    var g = go();
    
    console.log(g.next());
    console.log(g.next(1));
赞(2)
未经允许不得转载:Mxue note » js中的Generator和yield