在ES6之前,一个函数一旦开始执行,将不会被中断,一直到函数执行完毕;在ES6之后,由于生成器的存在,函数可以暂停自身,待到合适的机会再开始运行。生成器函数同普通函数一样,可以传参,可以调用,不同是的,调用并不会向普通函数一样立即执行


// 运行生成器
function *foo(x,y) {
console.log(x + y);
}
var it = foo(5,10);
it.next(); // it.next()运行生成器函数里的代码
// 输出:15
// 输出:{value: undefined, done: true}