1.async修饰的函数
函数的返回值为Promise对象
Promise实例的结果由async函数执行的返回值决定的
2.await表达式
await右侧的表达式一般为Promise实例对象,但也可以是其他值
(1)如果是Promise实例对象,await后的返回值是promise成功的值
(2)如果表达式是其他值,直接将此值作为await的返回值
3.注意
await必须写在async函数中,但async函数中可以没有await
如果await的promise实例对象失败了,就会抛除异常,需要通过try....catch来捕捉处理
<div>async await</div>
<script>
const p1 = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('a')
})
})
const p2 = new Promise((resolve,reject)=>{
setTimeout(()=>{
reject('b')
},3000)
})
const p3 = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('c')
},5000)
})
;(async()=>{
try{
const A = await p1
console.log(A)
const B = await p2
console.log(B)
const C = await p3
console.log(C)
}catch(error){
console.log('出错了',error)
}
})()
</script>
舔狗await原理
<script>
const p1 = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('a')
},2000)
})
// 使用await,隐藏回调的写法
// async function dome(){
// const A = await p1
// console.log(A)
// }
// 浏览器翻译后的代码
async function dome(){
p1.then(
resolve =>{
console.log(resolve)
}
)
}
dome()
console.log('你好')
</script>

本文深入探讨了JavaScript中的async函数和await表达式,讲解了它们如何简化异步代码的编写。async函数返回一个Promise,而await用于等待Promise解析,返回其值。如果await后的Promise被拒绝,会抛出异常,需要try...catch捕获。示例代码展示了await在处理多个Promise时的顺序和错误处理。同时,通过舔狗await原理的解释,揭示了async函数内部如何转换为Promise的then方法。

被折叠的 条评论
为什么被折叠?



