【问题标题】:NodeJs Async Parallel: 'undefined is not a function'NodeJs Async Parallel:'未定义不是函数'
【发布时间】:2016-02-03 01:08:50
【问题描述】:

我正试图围绕异步库展开思考,但我在 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);
        });
    });
}

【问题讨论】:

    标签: node.js asynchronous node-async


    【解决方案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();
            })
        }
     );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      相关资源
      最近更新 更多