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 回调永远不会 运行。
我正在尝试使用 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 回调永远不会 运行。