Generator
Generator
函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同
声明
|
|
调用 Generator 函数并不会如同普通函数一样返回函数的返回值,而是返回一个迭代器对象。yield
用于惰性执行 Generator 函数,当调用迭代器对象的 next()
时,就会执行函数内的代码知道遇到一个 yield
声明,并且其后面的值作为 value
的值返回,如果程序执行完毕,那么 done
是 true
,反之是 false
next()
next()
是 Generator 函数的步骤执行的调用者,同时可以利用它来为函数内部注入值
|
|
使用 for…of
由于 Generator 函数调用返回一个迭代器对象 ,那么他就可以被所有支持迭代器遍历的特性使用,例如 for…of
|
|
除了 for…of,...
运算符和 Array.from()
同样支持 Generator
Generator.prototype.throw()
Generator函数返回的遍历器对象,都有一个throw方法,可以在函数体外抛出错误,然后在Generator函数体内捕获
|
|
Generator.prototype.return()
Generator函数返回的遍历器对象,还有一个return方法,可以返回给定的值,并且终结遍历Generator函数
|
|
yield*
yield*
用于在 Generator 函数内调用另一个 Generator 函数
|
|
Generator 函数的丰富超乎想象,这里写的笔记只是其冰山一角的特性,更多还是需要阅读相关书籍和资料
以上实例代码大部分来自阮一峰老师的 《ECMAScript 6 入门》 一书
书籍在线阅读地址: http://es6.ruanyifeng.com/#README