우리 모두 알고 있듯이 JavaScript 코드는 하나의 스레드, 즉 단일 스레드에서만 실행될 수 있습니다. 단일 스레드에서 실행되는 코드는 시간이 많이 걸리는 작업 로직이 있는 경우에만 순차적으로 실행될 수 있다는 특징이 있습니다. 코드를 사용하면 브라우저가 일시 중지될 수 있습니다.
그렇다면 JavaScript가 단일 스레드 모델로 설계된 이유는 무엇일까요?
Javascript 설계자는 javascript가 멀티 스레드로 설계되면 프로그램의 복잡성이 크게 증가할 것이라고 믿습니다. 예를 들어 스레드가 두 개 있으면 하나의 스레드가 버튼 버튼 생성을 담당하고 다른 스레드가 버튼을 삭제하는 경우 스레드 실행 순서가 불확실하기 때문에 이 버튼이 페이지에 나타날 수도 있고 나타나지 않을 수도 있어 개발자에게 큰 어려움을 초래할 수 있습니다. 따라서 단순함을 위해 JavaScript는 처음부터 JavaScript의 핵심 기능인 단일 스레드 모델로 설계되었습니다.
자바스크립트의 단일 스레드 제한을 해결하기 위해 자바스크립트 프로그램의 작업은 동기 작업과 비동기 작업으로 구분됩니다.
동기 작업: 자바스크립트 엔진에 의해 정지되지 않는 작업을 말합니다. 메인 스레드에 있고 실행 작업을 위해 대기 중인 경우, 다음 작업은 이전 작업이 완료된 후에만 실행을 시작합니다.
비동기 작업: JavaScript 엔진에 의해 작업 대기열에 배치되는 시간이 많이 걸리는 일부 작업(예: IO 요청)을 의미합니다. 이러한 작업은 기본 스레드에 있지 않기 때문에 이러한 작업은 기본 스레드에 예약되지 않습니다. 스레드 이전은 실행되지 않습니다(예: ajax의 콜백 함수).
그렇다면 작업 대기열은 어디서 오는 걸까요?
실제로 JavaScript가 실행될 때 메인 스레드 외에도 JavaScript 엔진은 일부 작업 대기열을 생성합니다. 여기에는 ajax 비동기 콜백 함수, setTimeout 등. 메인 스레드의 모든 작업이 실행되면 엔진은 각 작업 대기열에서 실행 조건을 충족하는 작업이 있는지 확인하고, 그렇다면 실행을 위해 메인 스레드에 예약됩니다.
위 내용은 자바스크립트 비동기 작업 원리(그림 및 텍스트)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!