NodeJS 异步回调没有成功?

NodeJS async callback not succeeding?

我正在尝试使用 async.map 功能实现一个 scraper 来遍历一个数组,做一些逻辑然后将它们映射到不同的值。

async.map($('.listing tr').toArray(), GetLink, function(err, results) {
    if (err) throw err;
    console.log(results);
});

它使用 cheerio 模块循环遍历所有 table 行以获取它们的链接,然后在它们上完成一些逻辑(从它链接的页面获取信息)。

var GetLink = function(tablerow, callback) {
    var nameElement = $(tablerow).children().first().find('a');
    var link = nameElement.attr('href');

然后我使用 'got' 模块(请求的 faster/more 准系统版本)获取页面 html。

    got(link, function(error, html, resp) {
        if (!error)
            callback(null, html); // Sends the HTML back as an array result.
    }
}

但是 async.map 回调 [function (err, results)] 永远不会 运行 即使回调是该范围内的有效函数。

如有任何信息,我们将不胜感激。

这就是堆栈溢出的方式..你花了很长时间尝试自己修复它,一旦你post一个问题,你就会想出来。

问题是 got 方法有时会出错,这意味着回调不是 运行。因此我改变了:

if (!error)
    callback(null, html);

if (!error)
    callback(null, html);
else
    callback(null, null);

如果逻辑方法中没有提供有保证的回调,async.map 回调永远不会 运行。