1.介绍
Function generator是ECMA 2015的新规范和技术, 名字略奇怪,然而用法也更骚更奇怪。 有两种方式编写一个生成器函数:
1 通过一个Constructor创建一个generator
var GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
var g = new GeneratorFunction("a", "yield a * 2");var iterator = g(10);
console.log(iterator.next().value); // 20
2 通过 function* 表达式:
var x = function*(y) {
yield y * y;};
传统函数有所谓的“run to completion”的特性,即一次运行直至完成。 这意味着这段js代码一旦执行其他代码段不能再运行。 因为我们知道js是单线程的,对于一个cmd执行指令来讲。对于callback函数泛滥的js来讲这是可怕的。
setTimeout(function(){
console.log("Hello World");},1);
function foo() {
// NOTE: don't ever do crazy long-running loops like this
for (var i=0; i<=1E10