在async.waterfall模型中传递的数据不起作用?

时间:2016-06-03 09:31:08

标签: javascript node.js swagger-node-express

我想直接将数据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 个答案:

答案 0 :(得分: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);
    });
}