JavaScript - Async function 和 Await

Async function 和 Await 兩者建構於 Promise 之上。

Sync (同步) / Async (非同步)

Sync (同步) : 依序等待執行,一次執行完一件事,才能繼續往下執行。
Async (非同步) : 可以一次處理不同需求,不須等待事件執行完畢才往下執行。

Async function

async function 用來定義一個非同步函式

await

運行在 async function 內,用來暫停非同步函式的運行,直到非同步進入 resolve (解決) 或 reject (出錯) 才會進入下一步。

例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function promiseFn(num, s) {                           //Promise 函式
return new Promise(function (resolve) { // 回傳一個 promise
setTimeout(resolve(`第 ${num} 輸出`), s); // 等待多少秒之後 resolve()
});
}

promiseFn(1, 200)
.then(resolve => { // 使用 then 來接收
console.log(resolve);
return promiseFn(2, 200); // 使用 return 來鏈接
}).then(resolve => {
console.log(resolve);
return promiseFn(3, 200);
}).then(resolve => {
console.log(resolve);
})

也可以:

1
2
3
4
5
6
7
8
9
10
11
12
13
function promiseFn(num, s) {
return new Promise(function (resolve) { // 回傳一個 promise
setTimeout(resolve(`第 ${num} 輸出`), s); // 等待多少秒之後 resolve()
});
}

async function delayFn() { // 回傳後才會往下依序執行
const data1 = await promiseFn(1, 200);
const data2 = await promiseFn(2, 200);
const data3 = await promiseFn(3, 200);
console.log(data1, data2, data3);
};
delayFn();
作者

LeeU

發表於

2020-12-24

更新於

2024-04-04

許可協議