JavaScript와 Node.js의 Array.forEach 비동기성
Array.forEach는 다음에 대한 콜백 함수를 실행하는 내장 JavaScript 메소드입니다. 배열의 각 요소. 일반적인 질문이 생깁니다. Array.forEach는 비동기식으로 작동합니까?
답변: 아니요, Array.forEach는 차단합니다. 즉, JavaScript 엔진은 콜백 함수의 실행이 완료될 때까지 기다렸다가 배열의 다음 요소로 이동합니다.
구현 세부 정보:
Array.forEach에 대한 MDN 사양은 구현에 대한 더 명확한 이해를 제공합니다.
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); } }; }
이 구현에서 콜백 함수는 배열의 각 요소에 대해 동기적으로 호출됩니다.
비차단 대안:
많은 수의 요소를 비동기식으로 실행해야 하는 경우 사용자 정의 알고리즘을 구현할 수 있습니다.
function processArray(items, process) { var todo = items.concat(); setTimeout(function() { process(todo.shift()); if(todo.length > 0) { setTimeout(arguments.callee, 25); } }, 25); }
이 접근 방식은 JavaScript의 비동기식을 활용합니다. setTimeout()을 사용하여 콜백 함수 실행을 예약합니다.
기타 비동기 옵션:
위 내용은 Array.forEach는 JavaScript와 Node.js에서 비동기식입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!