2016-05-12 5 views
4

Ich verwende async.parallel in zwei Funktionen mit der gleichen Rückruffunktion . In zweiter Funktion (two()) hinzugefügt dritte Funktion als AdditionsfunktionWie kann man die asynchrone Callback-Funktion wiederverwenden?

function one(){ 
var testuser = 1; 
async.parallel([onefunction, secondfunction], function(err, result){...}) 
} 

function two(){ 
var testuser = 2; 
async.parallel([onefunction, secondfunction, thirdfunction], function(err, result){...}) 
} 

function onefunction(callback){....code with testuser......} 
function twofunction(callback){....code with testuser......} 
function thirdfunction(callback){....code with testuser......} 

Q: Wie kann ich Testuser Wert in onefunction, secondfunction und thirdfunction zugreifen.

Jetzt bekomme ich undefined err. Ich habe auch versucht, als normale Parameter Pass-Logik onefunction(testuser), aber es funktioniert nicht.

Ich möchte onefunction, twofunction in mehreren Fällen verwenden ... wie kann ich das tun?

+0

es ein Parameter der Funktionen und es ihnen passieren. –

+0

@FelixKling können Sie kurz erklären? Du meinst 'onefunction (testuser)' ' –

+1

Nun, du wirst auch' callback' gehen müssen, nehme ich an. Und da Sie Funktionen an 'async.parallel' übergeben müssen (so scheint es), sollte es' callback => onefunction (testuser, callback) 'sein usw. –

Antwort

0

Als @Felix, schlug

function one(){ 
var testuser = 1; 
async.parallel([onefunction, secondfunction], function(err, result){...}) 
} 

    function two(){ 
    var testuser = 2; 
    async.parallel([ 
     callback => onefunction(testuser, callback), 
     callback => twofunction(testuser, callback), 
     callback => thirdfunction(testuser, callback)], function(err, result){...}) 
    } 

    function onefunction(callback){....code with testuser......} 
    function twofunction(callback){....code with testuser......} 
    function thirdfunction(callback){....code with testuser......} 
-2

Dies ist, wie kann ich testuser Wert in onefunction, secondfunction & so weiter .. Zugang
Code:

var async = require('async'); 

function one(){ 
    var testuser = 1; 
    //You can bind a context here; remember to pass the context i.e. null for this, otherwise it won't work as expected. 
    async.parallel({one_func:onefunction.bind(null,testuser), two_func:twofunction.bind(null,testuser)}, function(err, result){ 
     console.log("In one()"); 
     console.log("err",err); 
     console.log("result",result); //result array with all task's results e.g. one_func, two_func 
     console.log("testuser",testuser); 
}) 
} 

function onefunction(testuser,cb){ 
    console.log('onefunction'); 
    return cb(null,{"testuser":testuser}); 
} 

function twofunction(testuser,cb){ 
    console.log('twofunction'); 
    return cb(null,{"testuser":testuser}); 
} 

one(); 

Update: Antwort für Ihre weitere Frage in Titel über Rückrufe Wiederverwendung.
Sie können die benannte Funktion als Rückruf verwenden?
Beispielcode:

function one(){ 
    var testuser = 1; 
    async.parallel({one_func:onefunction.bind(null,testuser), two_func:twofunction.bind(null,testuser)},calback) 
} 

function calback (err, result){ 
     console.log("calback"); //You can reuse this named function as callbacks 
     console.log("err",err); 
     console.log("result",result); 
} 
+0

Wie löst das das OP-Problem? –

+0

'callback => onefunction (testuser, callback)' dieser Code funktioniert für mich .. danke amol für den Versuch –

+0

@PrashantTapase: Könnten Sie hier Ihre eigene Antwort posten (& akzeptieren), damit sie auch anderen hilft. Danke :) –

Verwandte Themen