NodeJs 异步并行:'undefined is not a function'
NodeJs Async Parallel: 'undefined is not a function'
我正在努力研究异步库,但我在 NodeJs 中很不稳定,我想不通 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);
});
});
}
在定义异步任务的部分,请务必指定一个带有参数方法的闭包,以便在任务完成后调用(与 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();
})
}
);
我正在努力研究异步库,但我在 NodeJs 中很不稳定,我想不通 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);
});
});
}
在定义异步任务的部分,请务必指定一个带有参数方法的闭包,以便在任务完成后调用(与 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();
})
}
);