>  기사  >  웹 프론트엔드  >  자바스크립트는 동기식인가요?

자바스크립트는 동기식인가요?

WBOY
WBOY원래의
2022-08-24 17:10:561526검색

JavaScript는 동기식입니다. JavaScript는 항상 동기식이며 단일 스레드이며 ajax 호출을 할 수 있다는 점에서 비동기식입니다. 즉, JavaScript 코드 블록이 페이지에서 실행되는 경우 현재 해당 페이지에 있는 JavaScript 코드 다른 JavaScript를 실행합니다.

자바스크립트는 동기식인가요?

이 튜토리얼의 운영 환경: Windows 10 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

Javascript는 동기식인가요?

JavaScript는 항상 동기식이며 단일 스레드입니다.

페이지에서 JavaScript 코드 블록을 실행하는 경우 현재 해당 페이지에서는 다른 JavaScript가 실행되지 않습니다.

JavaScript는 Ajax 호출을 할 수 있다는 점에서 비동기식입니다.

Ajax 호출은 실행을 중지하고 호출이 반환될 때까지(성공이든 아니든) 다른 코드를 실행할 수 있으며, 이 시점에서 콜백은 동기적으로 실행됩니다. 지금은 다른 코드가 실행되지 않습니다. 현재 실행 중인 다른 코드를 중단하지 않습니다.

JavaScript 타이머는 이와 동일한 유형의 콜백과 함께 실행됩니다.

JavaScript를 비동기식으로 설명하면 오해의 소지가 있을 수 있습니다. 정확하게 말하면 JavaScript는 다양한 콜백 메커니즘을 사용하여 동기식이며 단일 스레드입니다.

jQuery에는 Ajax 호출을 동기화하는 옵션이 있습니다(async: false 옵션 사용). 초보자는 더 익숙할 수 있는 보다 전통적인 프로그래밍 모델을 사용할 수 있기 때문에 이를 잘못 사용할 수 있습니다. 문제가 되는 이유는 이 옵션이 모든 이벤트 핸들러 및 타이머를 포함하여 완료될 때까지 페이지의 모든

JavaScript를 차단하기 때문입니다.

지식 확장

Javascript 언어는 단일 스레드 언어입니다

단일 스레드와 비동기는 동시에 언어의 기능이 될 수 없습니다. Node.js는 단일 스레드 언어를 선택했으므로 그 자체로는 비동기식일 수 없습니다. 브라우저는 이러한 기능을 실행하기 위해 하나의 메인 스레드만 js에 할당하기 때문에 한 번에 하나만 실행할 수 있습니다. 이러한 작업은 실행을 기다리는 작업 대기열을 형성하지만 프런트 엔드의 일부 작업은 시간이 많이 걸립니다. 네트워크 요청 및 타이밍 프로세서와 이벤트 리스너가 다른 작업처럼 실행을 기다리기 위해 대기열에 있으면 실행 효율성이 매우 낮고 페이지가 정지될 수도 있습니다.

JavaScript 단일 스레드에서 비동기 효과를 얻는 방법

따라서 브라우저는 주로 http 요청 스레드, 브라우저 타이밍 트리거 및 브라우저 이벤트 트리거 스레드를 포함하여 시간이 많이 걸리는 작업을 위해 다른 스레드를 엽니다. 호스트 환경(브라우저)을 사용하면 js가 이벤트 중심 방식을 통해 비동기 속성을 가질 수 있습니다.

모든 작업은 두 가지 유형으로 나눌 수 있습니다. 하나는 동기 작업(동기)이고 다른 하나는 비동기 작업(비동기)입니다. 동기 작업은 메인 스레드에서 실행을 위해 대기 중인 작업을 의미합니다. 다음 작업은 이전 작업이 실행된 후에만 실행될 수 있습니다. 메인 스레드 작업이 완료되고 "작업 대기열"이 메인 스레드에 알리고 작업 실행을 요청하기 시작한 경우에만 작업이 실행을 위해 메인 스레드에 들어갑니다.

CPU가 너무 바쁘면 잊어버리세요. 하지만 IO 장치(입력 및 출력 장치)가 매우 느리기 때문에(예: 네트워크에서 데이터를 읽는 Ajax 작업) CPU가 유휴 상태일 때가 많습니다. 결과가 나오도록 한 후 아래를 실행합니다.

구체적으로 비동기 실행 메커니즘은 다음과 같습니다.

모든 동기 작업은 메인 스레드에서 실행되어 실행 컨텍스트 스택을 형성합니다.

메인 스레드 외에 "작업 대기열"도 있습니다. 비동기 작업에 실행 중인 결과가 있는 한 이벤트는 "작업 대기열"에 배치됩니다.

"실행 스택"의 모든 동기 작업이 완료되면 시스템은 "작업 대기열"을 읽고 해당 비동기 작업은 실행 스택에 들어가 실행을 시작합니다.

메인 스레드는 위의 세 번째 단계를 계속 반복합니다.

【관련 추천: javascript 비디오 튜토리얼, web front-end

위 내용은 자바스크립트는 동기식인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.