生成器generator

生成器声明格式:
function* foo() { .. },或者 function *foo() { .. }
唯一区别是 * 位置的风格不同这两种形式在功能和语法上都是等同的。

var x = 1;
function *foo() {
x++;
yield; // 暂停!
console.log( "x:", x );
}
function bar() {
x++;
}

// 构造一个迭代器it来控制这个生成器
var it = foo();
// 记住,第一次next()是启动foo()
it.next();
x; // 2 这里因为遇到指示暂停点yield,此时x为2
bar();
x; // 3 因为还在暂停中,运行bar方法,x为3
it.next(); // x: 3 此时执行next(),恢复暂停,打印出x值为3

生成器就是一类特殊的函数,可以一次或多次启动和停止,并不一定非得要完成。

原文地址:https://www.cnblogs.com/xinyouhunran/p/14179443.html