一、对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) } }
标签:function,resolve,await,Promise,error,async From: https://www.cnblogs.com/chccee/p/17063657.html