2016-06-03 18 views
1

Ich möchte die Daten 1 und Daten 2 direkt an die letzte Funktion übergeben. Es funktioniert, wenn ich Daten 1 an die zweite Funktion und von dort Daten 1 + Daten 2 an die letzte Funktion übergeben. Aber das Problem ist, dass ich die Daten 1 nicht an die zweite Funktion weitergeben will. Können wir es mit 'asyc.series' und 'async.parallel' tun?.Datenübergabe im asyncwasserfallmodell funktioniert nicht?

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); 
      }); 
    } 

Antwort

1

Sie sollten es tun mit 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); 
    }); 
} 
Verwandte Themen