非同步編程,任務獨立執行,不會互相 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 處理非同步操作。