자바스크립트 콜백: 모두 비동기적이지는 않음
많은 자바스크립트 개발자는 자바스크립트의 모든 콜백이 특히 브라우저와 같은 특정 상황에서 비동기적이라고 가정합니다. 기반 XHR 요청 및 Node.js 파일 I/O. 그러나 브라우저와 노드 환경은 콜백 비동기성을 처리하는 방식이 다릅니다.
브라우저 환경
브라우저에서 콜백 비동기성은 주로 XHR 요청에서 발생합니다. 이는 브라우저 XHR 객체가 기본적으로 비동기 작업으로 설정되어 비차단 요청을 허용하기 때문입니다. 그러나 jQuery의 AJAX 함수는 동기 요청을 적용하기 위해 false로 설정할 수 있는 "async" 플래그를 제공합니다.
Node.js 환경
Node.js에서 비동기성은 콜백의 경우 일반적으로 파일 I/O, process.nextTick, setTimeout 또는 setInterval과 관련된 작업에서 비롯됩니다. MongoDB/Mongoose와 같은 라이브러리로 데이터베이스 호출을 실행할 때 이러한 작업은 본질적으로 차단 특성으로 인해 V8 이벤트 루프를 사용합니다.
비동기 콜백 결정
JavaScript에서 비동기 콜백에 레이블을 지정하는 표준화된 방식으로 인해 실제로 어떤 콜백인지 식별하기 어려울 수 있습니다. 개발자는 비동기성을 확인하려면 문서를 참조하거나 코드 구현을 검사해야 합니다.
비동기 콜백 생성
이전 버전의 JavaScript에서는 비동기성을 달성하려면 호스트 제공 기능을 활용해야 했습니다. . 그러나 ECMAScript 6에 Promise가 도입되면서 비동기성에 대한 언어 수준 접근 방식이 등장했습니다. Promise를 반환하는 함수는 then을 통해 등록된 콜백의 비동기 실행을 보장합니다.
결론적으로 모든 JavaScript 콜백이 본질적으로 비동기인 것은 아닙니다. 브라우저와 노드 환경은 비동기성을 다르게 처리하며 콜백 비동기성을 결정하려면 문서 검토와 코드 검사가 필요합니다. 호스트 제공 함수가 비동기 기능을 생성하는 수단을 제공하는 반면, Promise는 JavaScript에서 비동기성을 달성하기 위한 표준화되고 편리한 방법을 제공합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3