2016-04-07 15 views
0

Ich habe eine Reihe von unabhängigen Funktionen. Manche brauchen länger als andere, um zurückzukehren.Wie protokolliert man die Rückgabe mehrerer Funktionen in der Reihenfolge?

var functionArray = [ 
    function() {function1()}, 
    function() {function2()}, 
    ... 
]; 

Ich rufe sie von einer for-Schleife:

for(var i = 0; i < functionArray.length; i++) { 
    functionArray[i](); 
} 

Ich habe ein Textfeld in meiner app, die ich als eine Konsole bin mit, und ich möchte die Ergebnisse der Funktion anmelden 1 zuerst, 2 Sekunden usw.

Gibt es eine Möglichkeit, dies ohne Rückrufe zu tun? Die Rückrufe würden jede Funktion vom vorherigen Erfolg abhängig machen.

Ich könnte ich Funktion2() sowohl in einem successCallback und einem errorCallback von function1() ausführen, aber gibt es einen besseren Weg?

+3

warum ist das Protokoll aufeinander Erfolg abhängig, wenn die Funktionen voneinander unabhängig sind? – jmugz3

Antwort

0

Wenn diese Funktionen asynchron sind (was ich aus der Beschreibung übernehmen), dann mit dem Versprechen und Promise.all arbeiten würde am meisten Sinn machen:

Promise.all(functionArray).then(function (results) { 
    for (var i = 0; i < results.length; i++) { 
     console.log(results[i]); 
    } 
}); 

Beachten Sie, dass Sie benötigen, um Ihre Funktionen anzupassen, mit zu arbeiten Versprechungen dann; Entweder wickeln Sie sie jeweils in eine Promise und lassen Sie sie die resolve Rückruf entsprechend aufrufen, oder die Funktionen selbst müssen eine Promise zurückgeben.

0

Closure-Funktion kann sein:

for (var i = 0; i < functionArray.length; i++) { 
    (function(x) { 
     functionArray[i](); 
     console.log(x); 
    })(i); 
} 
Verwandte Themen