异步 grunt 任务中的 async.series

async.series inside an asynchronous grunt task

本文关键字:async series grunt 任务 异步      更新时间:2023-09-26

我有一个异步运行(使用 this.async)的繁琐任务,因为我在代码中有异步函数。我还希望一些任务串联运行,所以我正在使用来自异步 npm 模块的 async.series。问题是,当我到达 async.series 的最后一个回调即函数(err,result)时,我调用 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,打开"日志/应用程序.log"

有时也是成功的。任何意见都值得赞赏。谢谢

附言所有函数都不返回错误。错误对象在 最后一个回调始终为 null

感谢您@RodrigoMedeiros的帮助。是的,你是对的,我试图在其中一个函数中需要一个模块,但它的行为出乎意料。解决方法是只检查哪些语句可能会由于异步执行 grunt 任务而导致错误。就我而言,我删除了这些陈述,它们是不必要的。