async/await、Generator、Promise之间的关联和区别

promise与async/await 函数都是用来解决JavaScript中的异步问题,从最开始的回调函数处理异步,到Promise处理异步,到Generator处理异步,再到Async/await处理异步,每一次的技术更新都使得JavaScript处理异步的方式更加优雅。

从目前来看,async/await 被认为是异步处理的终极解决方案,让JS的异步处理越来越像同步任务。

关联
async/await:是建立在Generator函数的语法糖,可以更方便地实现异步编程。async 函数返回一个 Promise 对象,await 表达式会阻塞代码执行,直到 Promise 对象状态变为 resolved。

Promise:是一种异步编程模型,可以将回调函数嵌套的代码转换为链式调用。Promise 由 pending、fulfilled 和 rejected 三种状态,分别代表进行中、已完成和已失败。

Generator:是一种迭代器,可以通过 yield 表达式暂停代码执行,并通过 next() 方法恢复执行。Generator 可以配合 Promise 实现异步流程控制。

区别
async/await:是 ES7 引入的新特性,可以让异步编程看起来像同步编程,更加易读易写。async/await 只能用于函数内部,不能用于顶层代码(例如全局作用域)。(PS:高版本的Node中,可以在顶层使用 await)

Promise:是 ES6 引入的新特性,使用 then() 方法和 catch() 方法注册回调函数,实现异步编程。Promise 可以使用 race() 方法和 all() 方法处理多个异步操作。

Generator:是 ES6 引入的新特性,可以通过 yield 表达式暂停和恢复代码执行,实现异步流程控制。Generator 需要手动执行 next() 方法,才能继续执行下一步操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值