async await
定义
- 本质是Generator函数和Promise的语法糖(源码类似于上面的代码)
- 解释:
(1) async(异步的) : 用于声明一个异步函数
(2) await : 必须与async搭配使用
async(异步函数)
- 使用
async function foo (){
console.log(1)
}
console.log(0)
foo()
console.log(2)
-->
0,1,2
- 与普通函数区别
(1) 异步函数的返回值一定是一个promise, resolve的值就是异步函数return的值,不return默认返回undefined
(2) 异步函数的异常结果会作为返回的promise的rejected状态的值,需要通过catch捕获注意: 默认情况下,如果不写一些特殊代码,执行顺序和普通函数无异
await
- 使用: 专门用来解析promise,返回promise的resolve结果,如果reject则将reject结果作为异步函数返回值的promise的rejected状态
(async () => { const res=await {then(resolve) {resolve(111)} } console.log(res) })()
注意:await会阻止后续代码执行,必须等到解析的promise对象resolve之后才会正确执行接下来的代码,reject则抛出异常
值的注意: 由于await需要解析完promise的结果才会继续执行接下来的代码,所以await之后的代码相等于一起和.then进入了微任务队列
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!