2017-07-17 9 views
1

Ich versuche einen asynchronen Aufruf in einer Schleife auszuführen, benutze das zurückgegebene Ergebnis und mache auch die Variable 'q' für die innere Funktion verfügbar.Async-Funktion in Schleife - mache Variable in innerer Funktion verfügbar

Wie würde ich q für die innere Funktion verfügbar machen (mit dem gleichen Wert wie vor dem Async-Aufruf)?

var oController = this; 
for (var q = 0; q < dataArray.length; q++) { 
    var InspectionNo = dataArray[q].inspectionNo; 

    //async call 
    oController._validateInspection(InspectionNo) 

    //returns flag 
    .then(function(flag) { 
     debugger; 
     if (flag) { 
     //q is not defined here 
     oController._doSomething(q) 
     } 
    }); 
} 
+2

'q' * wird * definiert werden, und sein Wert wird' dataArray.length'. – Pointy

+0

@Pointy danke für Ihre Antwort, ich muss wahrscheinlich umformulieren - ich suchte nach q zum Zeitpunkt des Aufrufs der asynchronen Anruf – neeko

+2

Verwenden Sie 'let' anstelle von' var' – Erazihel

Antwort

1

versuchen, etwas wie folgt aus:

var oController = this; 
for (var q = 0; q < dataArray.length; q++) { 
      var InspectionNo = dataArray[q].inspectionNo; 

      //async call 
      Promise.all([oController._validateInspection(InspectionNo), q]) 

      //returns flag 
      .then(function([flag, q]){ 
        if(flag){ 
         //q is not defined here 
         oController._doSomething(q) 
        } 
       }); 
     } 
+0

Danke! Das habe ich gesucht! – neeko

Verwandte Themen