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 }
知识点:
- 直接执行函数是不会有反应的,需要执行next()方法才可以执行内部的代码,并且按照顺序返回结果。
- 箭头函数不能作为Generator函数使用,只能使用function创建Generator函数。
- 值得注意的是,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));