我试图绕过异步库,但我在NodeJ中非常不稳定,我无法弄清楚async.parallel。下面的代码在要执行并行任务的行上生成错误TypeError: undefined is not a function
。我是否正确,在async.parallel中运行的任务在完成时应该有callback()
? (函数的不相关部分被编辑)
function scrapeTorrents(url, callback) {
request(url, function(err, res, body) {
if(err) {
callback(err, null);
return;
}
var $ = cheerio.load(body);
var results = [];
var asyncTasks = [];
$('span.title').each(function(i, element){
// scrape basic info
var show = {title: info.title, year: info.year};
asyncTasks.push(
getOmdbInfo(show, function (err, res) {
if (res) {
omdbInfo = res;
results.push({
// add basic info and Omdb info
});
}
callback();
})
);
});
async.parallel(asyncTasks, function(){
callback(null, results);
});
});
}
答案 0 :(得分:1)
在定义异步任务的部分中,请确保在任务完成后指定一个带参数方法的闭包(名称与callback
不同,以避免提升)。
asyncTasks.push(
function (done) {
getOmdbInfo(show, function (err, res) {
if (err) {
return done(err);
}
if (res) {
omdbInfo = res;
results.push({
// add basic info and Omdb info
});
}
return done();
})
}
);