Nodejs http请求数组,尽管出现一些错误但仍获取数据

时间:2017-08-23 13:01:45

标签: javascript node.js promise axios

我通过发出一系列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拒绝。

1 个答案:

答案 0 :(得分:0)

将此行代码包装在try / catch块中。这是抛出未处理的承诺拒绝错误的行。

const results = await axios.all(promises);