Передача данных в модели async.waterfall не работает?

Я хочу передать данные 1 и данные 2 последней функции напрямую. Это работает, когда я передаю данные 1 во вторую функцию и оттуда данные 1 + данные 2 в последнюю функцию. Но проблема в том, что я не хочу передавать данные 1 во вторую функцию. Можем ли мы сделать это с 'asyc.series' а также 'async.parallel'?.

 var fs = require("fs");
    var async = require('async');
    async.waterfall([
        myFirstFunction,
        mySecondFunction,            

    ], function (err,data1,data2) {
        var values={'data1':data1,'data2':data2,'msg':"hai"}
       console.log("values: %j", values);
    });
    function myFirstFunction(callback) {
          fs.readFile('file1.js','utf8',function(err,data1){
          callback(null,data1);
           });
    }
    function mySecondFunction(callback) {
         fs.readFile('file2.js','utf8',function(err,data2){
          callback(null,data2);
          });
    }

1 ответ

Решение

Вы должны сделать это с помощью async.parallel

var fs = require("fs");
var async = require('async');
async.parallel([
    myFirstFunction,
    mySecondFunction,            

], function (err, results) {
    if(err) console.error(err);
    var data1 = results[0];
    var data1 = results[1];
});

function myFirstFunction(callback) {
    fs.readFile('file1.js','utf8',function(err,data1){
        callback(null,data1);
    });
}

function mySecondFunction(callback) {
    fs.readFile('file2.js','utf8',function(err,data2){
        callback(null,data2);
    });
}
Другие вопросы по тегам