一、簡介
- 需先了解 Promise 【連接地址】
- JavaScript 中的異步函數方法。
- JavaScript 在很短的時間內從回調演變爲 Promises ,從 ES2017(ES8) 開始,使用 async/await 語法讓異步 JavaScript 變得更簡單。
- async(異步) 函數是 promises 和 generator 的組合,基本上,它們是對 promises 的更高級別的抽象。
注意:async/await 基於 promises。
二、引入 async/await 的緣由
- 它們下降了 promises 對一些固定語法樣板的要求,打破了鏈式 promise 「不能切斷鏈式」的限制。
- 在 ES2015 中引入 Promise 時,它們旨在解決異步代碼的問題,而且他們確實作到了,但在 ES2015 和 ES2017 的兩年中,人們發現很明顯 promises 不是最終的解決方案。
- 引入 Promises 來解決著名的回調地獄問題,可是由於他們自身的複雜性,引入了更復雜的語法。
- 它們是良好的原語,能夠向開發人員公開更好的語法,因此當時機成熟時,咱們就有了 異步函數(async functions)。
- 它們使代碼看起來像是同步,但它在後臺是異步和非阻塞的。
二、原理
- async(異步) 函數返回一個 promise,以下例1所示:
const doSomethingAsync = () => {
return new Promise((resolve) => {
setTimeout(() => resolve('I did something'), 3000)
})
}
三、未寫完,待續