迭代器
什么是迭代器
js迭代器是一个对象,具有next方法,可以返回序列中的带有done和value两个属性的下一项。
|
|
迭代器接口
可迭代对象如Map,Set,Array,String,arguments,DOM elements的实例拥有一个名为Symbol.iterator的接口函数,调用该函数会返回迭代器
|
|
拥有该接口函数的,可以使用for of
循环,优点是可以使用break,只会遍历可迭代对象。
|
|
输出1,3,4
还可以使用展开运算符,yield*以及结构赋值
生成器
function*
function* 可以生成generator生成器对象。函数在调用generator的next方法时才会运行,运行到yield处会暂停,注意,会把yield处的语句执行。等到下一个next方法运行时才继续执行,
调用 next()方法时,如果传入了参数,那么这个参数会作为上一条执行的 yield 语句的返回值,例如:
|
|
generator生成器对象
生成器对象即是可迭代对象又是迭代器,由generator function返回,具有next方法和return方法。
next方法可以获得下一项
|
|
return结束迭代。
|
|
实战
斐波那契数列
|
|
异步
一个每次调用加10的函数。可以看出,gen函数中的写法是同步的风格,然而实际上t函数中用到了异步,这里用到了yield的暂停和重新启动功能,十分强大。
|
|
输出10,20,30
跟promise结合
|
|