generator是一个迭代生成器,其返回值为迭代器(Iterator),是ES6标准引入的新的数据类型,主要用于异步编程,它借鉴于Python中的generator概念和语法。
generator函数是分段执行的,有两个重要方法:
- yield表达式 :是暂停执行的标记
- next() :可以恢复执行
优点:利用循环,每调用一次,就使用一次,不占内存空间,打破了普通函数执行的完整性
缺点:需要用next()方法手动调用,直接调用返回无效Iterator
简单理解:generator函数就是封装异步任务的容器,异步操作需要暂停的地方都用yield语句,调用必须要用next方法,每次调用next方法都会暂停直到遇到下一个yield表达式