生成器函数基本概念
概念:它是ES6提供的一种解决异步编程解决方案。
区别(与普通函数):</br>
1. 普通函数是通过function声明,生成器函数是用function*声明。
2. 生成器函数中没有return,但是有一个类似return功能的语法:关键字yield,在普通函数中,return只能一次,而在生成器函数中,yield可以有多次,在生成器执行过程中遇到yield表达式会立即暂停,后续可恢复执行状态。
生成器函数实例
1 | function* quips(name){ |
实例分析: 调用quips()
1 | >var iter = quips("Hedy"); |
当在调用一个quips()时,它不会立即执行,返回的是一个指向内部状态的指针对象(遍历器对象),当后面调用该对象的.next()方法时,函数会执行直到遇到下一个yield表达式,此时会再次暂停执行。即yield表达式是暂停执行标志,next()方法可恢复执行。其中,结果返回的value是表示当前的内部状态的值,即yield表达式后面的值,done则表示是否遍历结束。
【注】生成器运行时,它和调用者是处于同一线程中,并且拥有确定的连续执行顺序,永远不会并发。