Title

一、对async/await 的理解

async 函数执行会返回一个 Promise 对象,如果在函数中 return 一个直接量,async 会把这个直接量通过 Promise.resolve() 封装成 Promise 对象。

那如果 async 函数没有返回值,它会返回 Promise.resolve(undefined)

如果返回的是一个失败的promise,返回的内容就是那个报错的信息

这和普通返回 Promise 对象的函数并无二致。

二、await 到底在等啥?

await 表达式的运算结果取决于它等的是什么。

  • 如果它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。
  • 如果它等到的是一个 Promise 对象,await 就忙起来了,它会阻塞后面的代码,等着 Promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果。
function getSomething() {
    return "something";
}
async function testAsync() {
    return Promise.resolve("hello async");
}
async function test() {
    const v1 = await getSomething();
    const v2 = await testAsync();
    console.log(v1, v2);
}
test();

三、async/await 如何捕获异常

使用 try catch的方式

async function fn(){
  try{
    let a = await Promise.reject('error')
  }catch(error){
    console.log(error)
  }
}

 

posted on 2023-01-21 10:42  chccee  阅读(30)  评论(0编辑  收藏  举报