0

Jetzt habe ich funcA, funcB, arrayA und arrayB. In funcA füllt sich arrayB mit der Anforderung einiger externer Informationen und die Zeit dafür ist unterschiedlich. Ich möchte, dass es funcB nach arrayB.length == arrayA.length ausführt, und arrayB ist eine globale Variable, deren Inhalt in funcB verwendet wird. Ich nehme an, dass ich JQuery zurückgestellt und versprich..so habe ich versucht, diesJavascript versprechen Verwirrung für die Ausführung von zwei Funktionen in der Reihenfolge

Aber das hilft nicht. Wie sollte ich es ändern?

+0

Die Überprüfung es in „einigen externen retrieval“, sonst nur nie löst getan werden muss (da es passiert nur einmal) – MinusFour

+0

@MinusFour mein schlecht. Es war in dieser Funktion. Ich habe gerade meinen Beitrag geändert – dwuuuu

+0

, also, in funcA, ArrayB muss bereits Daten drin haben? und ArrayA ist irgendwie magisch mit Daten durch einige Mittel bevölkert, die Sie nicht gezeigt haben? –

Antwort

0

ArrayB.forEach wird nichts tun. Es ist leer. Vergesse all diese Funktionen und schiebe zurück.

fetch('/mydata.json') 
    .then(function(response) { 
    //save your data from response to arrayB 
    //call your funcA 
    }) 
    .catch((error) => { 
    console.log(error); 
}); 

Ich weiß nicht, warum man braucht, dass:

if (arrayB.length == arrayA.length){ 
    Dfd.resolve(arrayB); 
} 

Aber fühlen Sie sich frei einen Scheck zu machen, bevor funcA aufrufen.

0

Ich löste das Problem, indem sie dies zu tun:

hi.done(function(){funcA()}); 
Verwandte Themen