2015-06-10 5 views
0

У меня есть задачи grunt, которые выполняются асинхронно (с использованием this.async), поскольку у меня есть асинхронные функции в коде. Я также хочу, чтобы несколько задач запускались последовательно, поэтому я использую async.series из модуля async npm. Проблема заключается в том, что когда я достигаю последнего обратного вызова функции async.series i.e (err, result), я вызываю done(), чтобы сообщить, что задача асинхронного grunt была успешно завершена, иногда она терпит неудачу и иногда проходит. Кажется, я не понимаю этого. Вот код:async.series внутри задачи асинхронного 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(); 
    } 
); 

Я получаю следующее сообщение об ошибке:

Fatal error: ENOENT, open 'logs/app.log'

, а также иногда успех. Любой вход оценивается. Благодаря

P.S. None of the functions return error. The err object in the last callback is always null.

+0

Почему '__genCompMap' требует двух обратных вызовов:' done' и 'callback'? –

+0

Вы правы. В этом нет необходимости. Я изменил логику и забыл ее удалить. Я обновил код. Спасибо, что указали это. – Gautam

+0

Вы ловите ошибки, когда они происходят, и передавая их в качестве первых аргументов функций обратного вызова? Если вы этого не сделаете, 'async.series' не будет знать, что произошла ошибка. –

ответ

0

Спасибо за вашу помощь @RodrigoMedeiros. Да, вы были правы, я пытался до требовать модуля в одной из функций, и он вел себя неожиданно. Исправление состоит в том, чтобы просто проверить, какие операторы могут вызывать ошибки из-за асинхронного выполнения задачи grunt. В моем случае я удалил эти заявления, они не нужны.

Смежные вопросы