iT邦幫忙

0

Promise vs async/await

  • 分享至 

  • xImage
  •  

非同步編程,任務獨立執行,不會互相 block。
可以透過 Promise 處理操作結果,並執行 callbacks。

const axios = require('axios')

function callAPI(url) {
    return new Promise((resolve, reject) => {
        axios.get(url)
            .then(res => {
                resolve(res.data)
            })
            .catch(err => {
                reject(err)
            })
    })
}

callAPI('https://api.example.com/data')
    .then(data => {
        console.log(data)
    })
    .catch(err => {
        console.log(err)
    })

callAPI return Promise
使用 axios.get
根據結果調用 resolve 還是 reject

callAPI(url)
成功:.then (callback)
失敗:.catch (callback)


async:標記 function
await:等待 Promise
不使用 .then 和 .catch
搭配 try 和 catch

async function callAPI(url) {
    try {
        const res = await axios.get(url)
        return res.data
    } catch (err) {
        throw err
    }
}

async function fetchData() {
    try {
        const data = await callAPI('https://api.example.com/data')
    } catch (err) {
        console.error(err)
    }
}

fetchData()

async/await 讓程式碼簡潔,但仍基於 Promise 處理非同步操作。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言