NodeJs Async Parallel:' undefined不是函数'

时间:2015-11-03 00:50:00

标签: node.js asynchronous node-async

我试图绕过异步库,但我在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);
        });
    });
}

1 个答案:

答案 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();
        })
    }
 );