一、简介Generator函数是ES6引入的新型函数,用于异步编程,跟Promise对象联合使用的话会极大降低异步编程的编写难度和阅读难度。与普通函数的区别:function关键字与函数名之间有一个星号;函数体内部使用yield语句,定义不同的内部状态(yield在英语里的意思就是“产出”)。二、简单示例1、yield和returnfunction* Foo() { yield ‘hello’; yield ‘world’; return ‘!’;}var foo = Foo();console.log(foo.next());console.log(foo.next());console.log(foo.next());注意:generator函数不能直接使用,是通过next()方法获取yield/return的返回结果,而return可以提前终止函数。2、yield字符串方式function Foo() { yield* ‘hello’;}var foo = Foo();console.log(foo.next());console.log(foo.next());console.log(foo.next());console.log(foo.next());console.log(foo.next());console.log(foo.next());数组方式function* Foo() { yield* [‘a’, ‘b’, ‘c’];}var foo = Foo();console.log(foo.next());console.log(foo.next());console.log(foo.next());console.log(foo.next());3、与for of配合使用yield和returnfunction* Foo() { yield 1; yield 2; return 3;}var foo = Foo();for(var v of foo) { console.log(v);}可以看出for of不执行return值yieldfunction Foo() { yield* ‘hello’;}var foo = Foo();for(var v of foo) { console.log(v);}未完待续…