介紹

定義為 async 的函式是一個可以執行非同步操作但仍然看起來同步的函式。它的工作方式是使用 await 關鍵字在等待 Promise 解析或拒絕時推遲該功能。

注意: 非同步功能是有望包含在 ECMAScript 2017 標準中的第 4 階段(完成)提案

例如,使用基於 promise 的 Fetch API

async function getJSON(url) {
    try {
        const response = await fetch(url);
        return await response.json();
    }
    catch (err) {
        // Rejections in the promise will get thrown here
        console.error(err.message);
    }
}

非同步函式總是返回一個 Promise 本身,因此你可以在其他非同步函式中使用它。

箭頭函式樣式

const getJSON = async url => {
    const response = await fetch(url);
    return await response.json();
}