JavaScript의 Array.forEach는 비동기식인가요?
Node.js의 비동기식 구현과 달리 JavaScript의 기본 Array.forEach 구현은 다음과 같이 작동합니다. 동기적으로. 즉, 집약적인 작업을 수행하는 함수가 포함된 배열에서 해당 함수를 호출하면 모든 요소가 처리될 때까지 브라우저가 차단됩니다.
이 작업을 더 잘 이해하기 위해 forEach 알고리즘의 사양을 살펴보겠습니다. :
<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); } }; }
이 코드는 forEach가 배열의 모든 요소를 반복하여 기본 스레드 내에서 각 요소에 대해 제공된 함수를 동기적으로 호출하는 것을 보여줍니다.
비동기 처리를 위한 대안
코드에 비차단 작업이 필요한 경우 대체 접근 방식을 고려할 수 있습니다.
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>
위 내용은 JavaScript의 Array.forEach는 동기식인가요, 비동기식인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!