2015-07-23 11 views
9

Hatte eine Debatte mit meinem Kollegen zu diesem Thema, da wir uns mit einigen Async/Sync-Problemen beschäftigen mussten. Allerdings warf es eine andere Frage auf, für die ich keine definitive Antwort finden konnte.

Nehmen Sie eine einfache for-each-Schleife ($ .each) an, wobei für jede Iteration eine Funktion im globalen Gültigkeitsbereich aufgerufen wird. Läuft die Funktion synchron oder asynchron? Nehmen wir Ajax nicht an, so ist die Funktion vollständig synchron, wenn auch nur ausgeführt. Mit anderen Worten, ich frage mich, ob der Funktionsaufruf selbst innerhalb der Iteration blockiert oder nicht.

Danke!

+1

Ist kein JavaScript noch single-threaded? – Marvin

+1

Also welche Seite dieser Wette ... [Husten ..Husten] .. * Debatte * waren Sie auf ... Empfänger ... oder Zahler? – charlietfl

+0

Payee natürlich. ;) – adi518

Antwort

3

Alles in JavaScript ist synchron. Wenn Sie keine Zeitüberschreitungen oder Rückrufe verwenden, wird alles "synchron" sein.

Einfaches Beispiel sollte es beweisen.

var data = [1,2,3]; 
var results = []; 
$.each(data, function(d) { results.push(d); }); 

console.log(results); // [1,2,3] 
+0

Ihr sagt also, die Iteration wird nicht fortgesetzt, bis die aufgerufene Funktion ausgeführt wird, richtig? – adi518

+0

@asde das ist richtig – Strelok

5

Es ist synchron. Sie können feststellen, ob Sie nach der Schleife einen Haltepunkt und innerhalb der Schleife einen Haltepunkt festlegen. Der Haltepunkt in der Schleife wird vor der Schleife nach der Schleife getroffen.

Dies wird unter der Annahme, die Haltepunkte werden in der Ausführung, Objekt/Array getroffen werden, dass geschlungen über hat Elemente usw.