gpt4 book ai didi

javascript - NodeJS 异步回调未成功?

转载 作者:行者123 更新时间:2023-12-03 10:56:08 24 4
gpt4 key购买 nike

我正在尝试使用 async.map 功能来实现一个抓取器,以迭代数组,执行一些逻辑,然后将它们映射到不同的值。

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

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

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

然后我使用“got”模块(更快/更准系统的请求版本)来获取页面 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)] 也永远不会运行。

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

最佳答案

这就是堆栈溢出的方式。您花了很长时间尝试自己修复它,一旦您发布问题,您就会弄清楚。

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

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

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

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

关于javascript - NodeJS 异步回调未成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28261780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com