1. 概述
生成器是一个函数,是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。
之前我们用的解决异步编程的方案是 纯回调函数 ,就是一层套一层 ,最后会形成回调地狱。如node里的fs模块、ajax、以及数据库的操作mongodb
2. 声明
生成器函数与普通函数有所不同,它需要在 function 与 函数名之间添加个*号。如:
<script>
function * gen(){
}
</script>
3. 调用
生成器函数的调用也有所不同
不能如下直接调用
<script>
function* gen() {
console.log('i am generator');
}
console.log(gen);
</script>
不然会显示如上效果,只打印函数体,不执行。
我们需要将gen赋给iterator迭代器,如下
<script>
function* gen() {
console.log('i am generator');
}
let iterator = gen();
console.log(iterator);
</script>
这样我们返回得到的就是一个迭代器对象
我们可以调用迭代器中的next方法来执行
<script>
function* gen()