什么是迭代器(Iterator)
- 可以被
next()
函数调用并不断返回下一个值的对象称为迭代器:Iterator
迭代器Iterator
是 ES6
引入的一种新的遍历机制,同时也是一种特殊对象,它具有一些专门为迭代过程设计的专有接口。
每个迭代器对象都有一个next()
方法,每次调用都返回一个当前结果对象。当前结果对象中有两个属性:
-
value
:当前属性的值 -
done
:用于判断是否遍历结束,当没有更多可返回的数据时,返回true
每调用一次next()
方法,都会返回下一个可用的值,直到遍历结束。
我们来创建一个迭代器:
1 |
|
什么是生成器(Generator)
- 生成器是一种返回迭代器的函数,通过
function
关键字后的星号(*)
来表示,函数中会用到新的关键字yield
。星号可以紧挨着function
关键字,也可以在中间添加一个空格.
1 |
|
特性
- 每当执行完一条
yield
语句后函数就会自动停止执行, 直到再次调用next()
; yield
关键字只可在生成器内部使用,在其他地方使用会导致程序抛出错误;- 可以通过函数表达式来创建生成器, 但是不能使用箭头函数
let generator = function *(){}
用生成器模拟一个 async
其实就是将生成器自执行。
1 |
|