目录
async
- 返回Promise对象
- return 字面量在async中会被自动通过Promsie.resolve()封装为Promsie对象
- 若其中没有await,则没有等待阻塞,等同于promsie
await
得到的结果
- 非Promise对象:即普通函数调用,则await运算结果就是其调用结果
- Promise对象:await会阻塞后面代码,直到该Promise对象获得resolve值,即作为await的运算结果
function getSomething(){
return "1"
}
async function testA(){
return Promise.resolve("2")
}
async function test(){
const v1 = await getSomething()
const v2 = await testA()
}
在async函数中,await函数调用不会造成阻塞,因为内部的所有阻塞会被封装成一个Promise对象中进行异步操作。
async/await
Generator语法糖
捕获异常-try/catch
async function fn(){
try{
let a=await Promise.reject('error')
}catch{
console.log(error)
}
}
对比Promise
Promise | async/await | |
代码可读性 | then | 几乎是同步写法 |
传递之间值 | 麻烦 | 几乎是同步写法 |
错误处理 | 冗余 | try/catch |
调试 | 没法搞 | 可打断点 |