* `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