這是我的 axios 函式包裝在自定義函式中:
async function getOrder(orderId) {
// ...
await axios({
method: 'post',
url: endpoint "/mymethod",
data: request
}).then(function (response) {
var data = response.data.result;
return data;
}).catch(function (error) {
return { "error": error };
});
}
但如果比我呼叫該函式:
router.get('/getOrder/:id', (req, res) => {
let result = getOrder(req.params.id);
res.json(result);
})
它什么也不回傳(因為它是異步的并且不等待.then())。
包裝 axios/async 函式并從外部呼叫的最佳方法是什么?
uj5u.com熱心網友回復:
我認為您await的代碼中缺少:
router.get('/getOrder/:id', async (req, res) => {
let result = await getOrder(req.params.id);
res.json(result);
})
=====================
[新更新] 對我來說 API 功能:
async getOrder(orderId) {
try {
const response = await axios.post(endpoint "/mymethod")
return response.data
} catch (error) {
return { "error": error }
}
}
并得到結果:
router.get('/getOrder/:id', async (req, res) => {
let result = await getOrder(req.params.id);
res.json(result);
})
===========
[New Update2]這是我使用 axios 的示例 async/await 函式
const axios = require("axios")
async function getOrder(orderId) {
try {
const response = await axios.get("http://google.com")
return response.data
} catch (error) {
return { "error": error }
}
}
async function main() {
let result = await getOrder();
console.log(result, "@@")
}
main()
=====================
[New Update3]與 axios 的新 Promise:
const axios = require("axios")
async function getOrder(orderId) {
// try {
// const response = await axios.get("http://google.com")
// return response.data
// } catch (error) {
// return { "error": error }
// }
return await new Promise((resolve, reject) => {
axios({
method: 'get',
url: "http://google.com"
}).then(function (response) {
var data = response.data
resolve(data)
}).catch(function (error) {
reject({ "error": error })
});
})
}
async function main() {
let result = await getOrder();
console.log(result, "@@")
}
main()
uj5u.com熱心網友回復:
我認為您缺少等待,因此您不回傳承諾,而是等待 getOrder 的結果在 res.json 中傳遞:
router.get('/getOrder/:id', async (req, res) => {
let result = await getOrder(req.params.id);
res.json(result);
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/493545.html
