遇到问题,感谢任何帮助。
我正在尝试将所有异步函数收集在一起。 尝试过 async.parallel、async.each、gather-gm。没有什么能让最终的回调起作用。 这是更新后的代码(但尚未正常工作):
var calls = [];
async.each(parser.allHrefs,function (href,callback) {
getHtml(href,function(err, add){
console.log("Passing data: " + href);
if(err){
return callback(err);
};
if(add){
calls.push(href);
};
return callback();
});
}, function (err) {
if(err){
console.log('something went wrong');
}else{
console.log('finished');
};
});
第一个函数:
function getHtml(link, callback) {
httpreq.get(link, function(err, res) {
if(err) {
return callback(err);
}
if(res.statusCode >= 300) {
return callback(null, false);
} else {
//cut parsing code here...
return callback(null, true);
}
});
}
p.s.:我已经更新了代码几次。在此示例中,我尝试使用 async.parallel。问题是,即使我没有收到任何错误,我仍然无法使用“getLocations”功能。代码看起来比第一个版本好得多,但仍然无法正常工作。
最佳答案
您的 gethtml 函数中有几个问题需要修复。
确保您现在返回的任何地方都调用了回调,例如
return callback(err)
当您想要传达错误或
return callback(null, result)
当您想要传达成功并返回结果时。切勿在未调用回调的情况下返回。
关于javascript - 在 Node.js 中使用异步模块的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29239889/