1.MDN文档
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/async_function
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/await
2.async函数
1.函数的返回值为promise对象
2.promise对象的结果由async函数执行的返回值决定
<script setup>
async function main() {
// 1.如果返回值是一个非Promise类型的数据,会转换为promise对象
// return 521
//2.如果返回的是一个Promise对象,则结果就是就是这个返回的结果
/* return new Promise((resolve,reject) => {
// resolve('OK')
reject('Error')
}) */
//3.抛出异常 【状态失败,结果就是抛出的值】
throw "Oh NO"
}
let result = main()
console.log('结果', result)
</script>
3.await表达式
1.await 右侧的表达式一般为promise对象,但也可以是其它的值
2.如果表达式是promise对象,await返回的是promise成功的值
3.如果表达式是其它值,直接将此值作为await的返回值
4.注意
1.await必须写在async函数中,但async函数中可以没有await
2.如果await的promise失败了,就会抛出异常,需要通过try…catch捕获处理
<script setup>
async function main() {
let p = new Promise((resolve,reject) => {
// resolve('OK')
reject('Error')
})
/* 1.右侧为promise的情况 (成功)
let res = await p;
console.log(res) // ---> OK */
// 2.右侧为其他类型的数据
let res2 = await 20
console.log(res2) //-->20
// 3.如果promise是失败的状态,会报错 【可以用try...catch...进行捕获】
try{
let res3 = await p;
// console.log('res3',res3)
}catch(e){
console.log('失败',e)
}
}
main()
</script>