generator(生成器)是ES6标准引入的新的数据类型。
一个generator函数不会调用不会立即执行,而是调用next()
函数才回执行:
function* foo(x) {
yield "1";
yield "2";
yield "3";
return x+x;
}
var fooRe = foo(3);//不会立即执行
var next1 = fooRe.next();//{value: "1", done: false}
var next2 = fooRe.next();//{value: "2", done: false}
var next3 = fooRe.next();//{value: "3", done: false}
var next4 = fooRe.next();//{value: 6, done: true}
generator函数会保存状态,语句yield
就会退出,下次进来从上次退出的地方开始执行。