循环数组请求的问题处理错误

Problem Handling error over loop array request

我用 cheerio 构建了一个数据 scraper,以从 url 的数组中获取一些数据。它 return 我 url 的完全相同的数组更多我 抓取的数据 。我的输出数组格式如下:

[{url: urls, value: share}]

它运行良好,但无法处理错误:

function getNbShares(urls) {
    return Promise.map(urls, request).map((htmlOnePage, index) => {
        const $ = cheerio.load(htmlOnePage),
            share = $('.nb-shares').html();
        return {
            url: urls[index],
            value: share
        };
    });
}

所以我尝试这样做但不起作用:

function getNbShares(urls) {
    return Promise.map(urls, request).map((htmlOnePage, index) => {
        const $ = cheerio.load(htmlOnePage);
            if(error) {
              return  {
                    url: urls[index],
                    value: null }
            } else {
            share = $('.nb-shares').html();
              if (!share) {
                   return  {
                    url: urls[index],
                    value: null }
                  } else {
                      return {
                          url: urls[index],
                           value: share
                      };
                  }}
    });
}

这个想法是,无论发生什么,它总是 return 我 url,如果 url 没有回答或者 则加上值为 null抓取器 不起作用。

我想我需要传递这样的函数 function(req,error) 但我不知道具体在哪里...

尝试"catch"错误? Promise Catch Docs

function getNbShares(urls) {
  return Promise.map(urls, request).map((htmlOnePage, index) => {
    const $ = cheerio.load(htmlOnePage),
        share = $('.nb-shares').html();
    return {
        url: urls[index],
        value: share
    };
  })
    .catch((error) => {
        //do something here with error
    })
}