2016-06-23 5 views
-1

Ich habe den folgenden Code in NodeJS schreiben:Wie implementiert man asynchrone Task mit einer Bedingung in Serie?

val1 = async1() 
if(val1 == 0){ 
val1 = async2() 
} 
val2 = async3(val1) 

In dem obigen Code, val1 und val2 werden die Werte aus asynchronen Funktionen async1(), async2() und async3() zurückgegeben, wie ich es umsetzen kann?

+0

Ist 'val1' ein Versprechen? nimmt 'async1' einen Rückruf an? Zeigen Sie uns den tatsächlichen Code. – naomik

+0

@naomik eigentlich ist das oben ein Pseudo-Code. 'val1' ist ein ganzzahliger Wert und' async1' kann so entworfen werden, dass ein Rückruf ausgeführt wird. – Vishal

+0

Wenn 'async1',' async2' und 'async3' in Ihrer Kontrolle sind, empfehle ich Ihnen, dass Sie Promises zurückgeben. Versprechen bieten einen viel besseren Flusskontrollmechanismus als Callbacks. – naomik

Antwort

0

Sie könnten async verwenden.

Der obige Pseudocode kann durch waterfall Methode implementiert werden.

Beispielimplementierung:

async.waterfall([ 
    function(callback){ 
     callback(null, async1()); 
    }, 
    function(val1, callback){ 
     if(val1==0){ 
      callback(null, async2()); 
     } else { 
      callback(null, val1); 
     } 
    }, function(val1, callback){ 
     callback(null, async3(val1)); 
    } 
    ], function(error, val2){ 
      <you get val2 here> 
}); 
Verwandte Themen