async与await
async
作为一个关键字放在函数的前面,表示该函数是一个异步函数,意味着该函数的执行不会阻塞后面代码的执行 异步函数的调用跟普通函数一样。
异步函数返回的是一个Promise
对象
1 | async function timeout(){ |
async
的内部实现原理就是:如果该函数中有一个返回值,当调用该函数时,默认会在内部调用Promise.solve()
方法把它转化成一个Promise
对象作为返回,若函数内部抛出错误,则调用Promise.reject()
返回一个Promise
对象
await
await
即等待,用于等待一个Promise
对象。它只能在异步函数async function
中使用,否则会报错。它的返回值不是
Promise
对象而是Promise
对象处理之后的结果。await
表达式会暂停当前async function
的执行,等待Promise
处理完成。若
Promise
正常处理(fulfilled)
,其回调的resolve()
函数参数作为await
表达式的值,继续执行async function
;若
Promise
处理异常(rejected)
,await
表达式会把Promise
的异常原因抛出。如果
await
操作符后的表达式的值不是一个Promise
,那么该值将被转换为一个已正常处理的Promise
1 | // async await方式 |
与Promise对比
1、不再需要多层.then方法
假设一个业务分很多步骤完成,并且每个步骤都是异步,依赖上一个步骤的结果。2、可以对Promise进行并行处理
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 被咬了一口の包子°!
评论