Ist Array.forEach in JavaScript asynchron?
Im Gegensatz zu seinen asynchronen Gegenstücken in Node.js funktioniert die native Array.forEach-Implementierung in JavaScript synchron. Das heißt, wenn Sie die Funktion in einem Array mit einer Funktion aufrufen, die intensive Vorgänge ausführt, blockiert der Browser, bis alle Elemente verarbeitet wurden.
Um diesen Vorgang besser zu verstehen, untersuchen wir die Spezifikation des forEach-Algorithmus :
<code class="javascript">if (!Array.prototype.forEach) { Array.prototype.forEach = function (fun /*, thisp */) { "use strict"; if (this === void 0 || this === null) throw new TypeError(); var t = Object(this); var len = t.length >>> 0; if (typeof fun !== "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in t) fun.call(thisp, t[i], i, t); } }; }
Dieser Code zeigt, dass forEach alle Elemente des Arrays durchläuft und die bereitgestellte Funktion für jedes Element synchron innerhalb des Hauptthreads aufruft.
Alternativen für die asynchrone Verarbeitung
Wenn Ihr Code einen nicht blockierenden Betrieb erfordert, können Sie alternative Ansätze in Betracht ziehen:
Verwenden von setTimeout:
<code class="javascript">function processArray(items, process) { var todo = items.concat(); setTimeout(function () { process(todo.shift()); if (todo.length > 0) { setTimeout(arguments.callee, 25); } }, 25); }</code>
Das obige ist der detaillierte Inhalt vonIst Array.forEach von JavaScript synchron oder asynchron?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!