async与await
可以理解为Promise的一个语法糖
async:我们可以使用async来快速创建一个异步函数,被async创建的函数,他的函数返回值会被包装成为一个Promise,比如说
async function fn() {
return 10
}
fn() // Promise {<fulfilled>: 10}
async声明的异步函数中可以使用await来调用其他异步函数
async function fn1() {
return 10
}
async funcrion fn2() {
let result = await fn1() // 10
}
在调用异步函数时,可以直接在异步函数前使用await关键字来对其进行调用,调用await,它会等待Promise执行出结果后,将结果返回,此时可以使用变量接收。但是要注意的是await并不是将异步函数变为同步函数,只是改变了异步函数的调用方式,所以await并不是在任何位置都能用的,在我们使用await,catch方法将不能再使用,只能使用try catch来处理异常
对于await的书写位置:
1:async声明的异步函数中
2:可以在模块的外层的作用域中使用await
创建一个a.js的文件:
async function fn() {
return 10;
}
let result = await fn();
console.log("----", result);
export const a = 10;
在html文件中,声明了type为module的脚本中执行时
<script type="module">
import {a} from './a.js'
async function fn() {
return 10
}
async function fn1() {
let result = await fn()
console.log(result)
}
fn1()
</script>
最终控制台打印
---- 10
10