es6新特性 - Generator
一、定义
-
Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同
-
执行 Generator 函数会返回一个遍历器对象,可以依次遍历 Generator 函数内部的每一个状态
二、特征
-
function关键字与函数名之间有一个星号
-
函数体内部使用yield表达式,定义不同的内部状态
三、异步解决方案
-
回调函数:所谓回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候,再调用这个函数
-
Promise:Promise就是为了解决回调地狱而产生的,将回调函数的嵌套,改成链式调用
-
generator:yield表达式可以暂停函数执行,next方法用于恢复函数执行,这使得Generator函数非常适合将异步任务同步化
-
async/await:将上面Generator函数改成async/await形式,更为简洁,语义化更强了
-
区别:
-
promise和async/await是专门用于处理异步操作的
-
Generator并不是为异步而设计出来的,它还有其他功能(对象迭代、控制输出、部署Interator接口...)
-
promise编写代码相比Generator、async更为复杂化,且可读性也稍差
-
Generator、async需要与promise对象搭配处理异步情况
-
async实质是Generator的语法糖,相当于会自动执行Generator函数
-
async使用上更为简洁,将异步代码以同步的形式进行编写,是处理异步编程的最终方案
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构