Async/Await簡介
- async/await是寫異步代碼的新方式,以前的方法有回調函數和Promise。
- async/await是基於Promise實現的,它不能用於普通的回調函數。
- async/await與Promise一樣,是非阻塞的。
- async/await使得異步代碼看起來像同步代碼,這正是它的魔力所在。
使用Promise是這樣的:
const makeRequest = () =>
getJSON()
.then(data => {
console.log(data)
return "done"
})
makeRequest()
使用Async/Await是這樣的:
const makeRequest = async () => {
console.log(await getJSON())
return "done"
}
makeRequest()
它們有一些細微不同:
- 函數前面多了一個aync關鍵字。await關鍵字只能用在aync定義的函數內。async函數會隱式地返回一個promise,該promise的reosolve值就是函數return的值。(示例中reosolve值就是字符串"done")
- 第1點暗示我們不能在最外層代碼中使用await,因爲不在async函數內。