![](/img/trans.png)
[英]How to use Axios async/await properly to get variable out of response?
[英]How to properly save async/await axios response into variable
第三方API一次只能处理一个查询字符串。 所以我正在尝试采用多个字符串并拆分为数组。 然后,我将遍历数组,进行异步/等待axios调用,并将每个响应对象推送到一个空数组中。
使用下面的代码,数据似乎并没有存储在最后。 我最好的猜测是我不了解如何正确使用异步/等待功能。 谁能帮我吗?
app.get("/api/posts", (req, res) => {
const tags = req.query.tags;
const fetchData = [];
const axiosCall = async tag => {
const response = await axios.get(
`https://hatchways.io/api/assessment/blog/posts?tag=${tag}`
);
fetchData.push(response.data);
//returns correct response object in an array
console.log(fetchData);
};
tags.split(",").length > 1
? tags.split(",").map(tag => {
axiosCall(tag);
})
: axiosCall(tags);
//Returns empty array
res.send(fetchData);
});
由于axiosCall是异步的,因此您需要等待promise解决
像这样
app.get("/api/posts", (req, res) => {
const tags = req.query.tags;
const axiosCall = async tag => {
const response = await axios.get(`https://hatchways.io/api/assessment/blog/posts?tag=${tag}`);
return response.data;
};
Promise.all(tags.split(",").length > 1 ? tags.split(",").map(axiosCall) : [axiosCall(tags)])
.then(fetchData => res.send(fetchData));
});
或在各处使用异步/等待
app.get("/api/posts", async (req, res) => {
const tags = req.query.tags;
const axiosCall = async tag => {
const response = await axios.get(`https://hatchways.io/api/assessment/blog/posts?tag=${tag}`);
return response.data;
};
const fetchData = await Promise.all(tags.split(",").length > 1 ? tags.split(",").map(axiosCall) : [axiosCall(tags)]);
res.send(fetchData);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.