异步grunt任务中的async.series

时间:2015-06-10 18:36:46

标签: javascript node.js asynchronous gruntjs npm

我有一个以异步方式运行的grunt任务(使用this.async),因为我在代码中有异步函数。我也想要几个串口运行的任务,所以我使用异步npm模块的async.series。 问题是,当我到达async.series的最后一个回调,即函数(错误,结果)时,我调用done()来通知异步grunt任务已成功完成,它有时会失败并且有时会通过。我似乎无法理解它。这是代码:

grunt.registerTask('aggCompJSON', function(){
  var done = this.async();
  var resultFile = {};  // final JSON object
  var groupJSON = {};   // groups JSON object

  async.series([
    function(callback){
        // get Application Configuration
        __getAppConfig(grunt, callback);
    },

    function(callback){
        // generate Component_map
        __genCompMap(grunt, callback);
    }
  ], function (err, result){
        done();
    }
  );

我收到以下错误:

  

致命错误:ENOENT,打开'logs / app.log'

有时也会成功。任何输入都表示赞赏。 感谢

  

P.S。这些函数都没有返回错误。中的错误对象   最后一次回调始终为 null

1 个答案:

答案 0 :(得分:0)

感谢您的帮助@RodrigoMedeiros。是的,你是对的,我试图在其中一个功能中要求一个模块,并且它表现得出乎意料。解决方法是仅检查由于grunt任务的异步执行而导致哪些语句可能导致错误。在我的情况下,我删除了这些陈述,它们是不必要的。