我通过发出一系列GET请求从外部API获取有关用户品味的数据。我尝试使用axios库以异步方式执行此操作。我正在创建的promise数组应该解析为我提供数据,但是当API为任何请求返回404时,整个promise数组被视为已被拒绝。我的理解是这是正常的。
但是,即使某些请求收到404错误,我也希望能够从成功的请求中接收和处理数据。
const axios = require('axios');
const fetchContent = async (req, res) => {
const favorites = ['food', 'music', 'movies'];
const user_id = 84;
const promises = favorites.map(fav => {
return axios.get(api_url, { params: { user: user_id, category: fav } });
});
const results = await axios.all(promises);
results.map(result => {
// do something with result
});
};
如果API没有关于某个类别中用户偏好的数据,则响应将为:
{"status": 404, "message": "Not Found"}
我尝试在.get()请求的末尾添加一个.catch()语句,但我很清楚该解决方案不起作用,因为Node抱怨未处理的promise拒绝。
答案 0 :(得分:0)
将此行代码包装在try / catch块中。这是抛出未处理的承诺拒绝错误的行。
const results = await axios.all(promises);