ES7
中的 async
及 await
就是 Generator
以及 Promise
的语法糖,内部的实现原理还是原来的,只不过是在写法上有所改变,这些实现一些异步任务写起来更像是执行同步任务。
一个函数前加上 async
关键字,就将该函数返回一个 Promise
,async
直接将返回值使用 Promise.resolve()
进行包裹(与 then 处理效果相同)。await
只能配套 async
使用,await
内部实现了 generator
,await
就是 generator
加上 Promise
的语法糖,且内部实现了自动执行 generator
。
为什么要使用async和await
1.有内置执行器:async 函数自带执行器。也就是说,async 函数的执行,与普通函数一模一样,只要一行。
2.更清晰的语义: async 和 await,比起星号和 yield,语义更清楚了。async 表示函数里有异步操作,await 表示紧跟在后面的表达式需要等待结果。
原文地址:https://www.cnblogs.com/cccpear/p/12347291.html
时间: 2024-10-13 23:19:18