* `async`是 ES7 才有的与异步操作有关的关键字,和 Promise , Generator 有很大关联的。
* `async`关键字可以声明一个异步函数,该异步函数返回一个 Promise 对象。
* 如果`await`关键字修饰的函数返回一个 Promise 对象,则等待该函数执行完后才开始执行剩余的代码,并且返回 Promise 对象处理的结果。
* 如果`await`关键字修饰的函数返回非 Promise 对象,则立即执行并返回该函数处理的结果。
* `await`关键字必须在`async`函数内部使用,在其他地方使用会语法错误。
下面是几种使用案例。
**1. `async`异步函数**
```java
/**
* 声明async异步函数
*/
async function fun01() {
return 'fun01'
}
/**
* 因为async函数返回的是一个Promise对象,所以可以调用Promise对象的then函数获取
* async函数的返回值
*/
fun01().then((value) => {
console.info(value) //fun01
})
```
<br/>
**2. `async`与`await`配合使用:`await`函数返回非Promise对象**
```java
* 一个普通函数
*/
const fun02 = () => {
return 'fun02'
}
async function fun03() {
//在async函数中使用await,直接返回函数fun02的处理结果
const value = await fun02()
console.info(value) //fun02
return value
}
fun03().then((value) => {
console.info(value) //fun02
})
```
<br/>
**3. `async`与`await`配合使用:`await`函数返回Promise对象**
```java
/**
* 返回Promise对象的函数
*/
const fun04 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('fun04')
}, 2000)
})
}
async function fun05() {
//fun04返回的是Promise,需要等待2000ms才继续往下执行,并返回Promise对象处理的结果
const value = await fun04()
console.info('fun05', value) //等待2000ms后输出:fun05 fun04
return value
}
fun05().then((value) => {
//等待2000ms后才获取值
console.info(value) //fun04
})
```
- nodejs
- 同时安装多个node版本
- Vue3
- 创建Vue3项目
- 使用 vue-cli 创建
- 使用 vite 创建
- 常用的Composition API
- setup
- ref
- reactive
- 响应数据原理
- setup细节
- reactive与ref细节
- 计算属性与监视
- 生命周期函数
- toRefs
- 其它的Composition API
- shallowReactive与shallowRef
- readonly与shallowReadonly
- toRaw与markRaw
- toRef
- customRef
- provide与inject
- 响应式数据的判断
- 组件
- Fragment片断
- Teleport瞬移
- Suspense
- ES6
- Promise对象
- Promise作用
- 状态与过程
- 基本使用
- 常用API
- async与await
- Axios