JavaScript 이벤트 순환 및 매크로 작업 마이크로 작업 원리 분석
인쇄 순서 가 무엇 입 니까?
정 답:script start,script end,promise 1,promise 2,setTimeout
이벤트 순환(event loop),매크로 작업(macrotask),마이크로 작업(microtask)과 관련 이 있 습 니 다.
1.이벤트 순환 이벤트 루프
프로그램 에 두 개의 스 레 드 를 설정 합 니 다.하 나 는 프로그램 자체 의 운행 을 책임 지고'메 인 스 레 드'라 고 합 니 다.또 다른 메 인 스 레 드 와 다른 프로 세 스(주로 각종 I/O 작업)의 통신 을 담당 하 며'Event Loop 스 레 드'('메시지 스 레 드'로 번역 가능)라 고 불 린 다.
모든 작업 은 두 가지 로 나 눌 수 있 습 니 다.하 나 는 동기 화 작업(synchronous)이 고 다른 하 나 는 비동기 작업(asynchronous)입 니 다.
동기 화 작업 이란 메 인 스 레 드 에서 줄 을 서서 수행 하 는 작업 을 말 합 니 다.이전 작업 이 완료 되 어야 다음 작업 을 수행 할 수 있 습 니 다.
비동기 작업 이란 메 인 스 레 드 에 들 어가 지 않 고'작업 대기 열'(task quue)에 들 어 가 는 작업 을 말 합 니 다.'작업 대기 열'만 메 인 스 레 드 에 알 리 고 어떤 비동기 작업 이 실 행 될 수 있 습 니 다.이 작업 은 메 인 스 레 드 에 들 어가 서 실 행 됩 니 다.
일반적으로 비동기 임 무 는 다음 과 같은 세 가지 유형 이 있다.
1.클릭,크기 조정 등 일반적인 이벤트
2.자원 로드,예 를 들 어 load,error 등
3.타이머,setInterval,setTimeout 등 포함
이벤트 순환 의 구체 적 인 과정 은 다음 과 같다.
4.567917.동기 화 작업 은 메 인 스 레 드 에 들 어가 고 비동기 작업 은 Event Table 에 들 어가 함 수 를 등록 합 니 다
JavaScript 에서 작업 은 두 가지 로 나 뉘 는데 하 나 는 매크로 작업(MacroTask)이 고 하 나 는 마이크로 작업(MicroTask)이다.
2.1 매크로 작업(매크로 작업)
숙주 환경 에서 제공 하 는(브 라 우 저 와 node)
script 모든 코드,setTimeout,setInterval.
브 라 우 저 는 JS 내부 task 와 DOM 작업 을 질서 있 게 수행 할 수 있 도록 한 task 실행 이 끝 난 후 다음 task 실행 이 시작 되 기 전에 페이지 를 다시 렌 더 링 합 니 다(task->렌 더 링->task->...)
2.2microTask(마이크로 퀘 스 트)
언어 표준 제공
Promise、await
async 함수 표시 함수 에 비동기 방법 이 있 을 수 있 습 니 다.await 뒤에 표현 식 이 있 습 니 다.async 방법 이 실 행 될 때 await 를 만나면 바로 표현 식 을 실행 한 다음 await 표현 식 뒤의 코드 를 마이크로 작업 대기 열 에 넣 고 실행 스 택 을 내 보 내 동기 코드 를 먼저 실행 하 게 합 니 다.
async function foo() {
var a = await new Promise((resolve) => {
setTimeout(() => {
resolve(1);
}, 2000);
});
console.log(a); // 2 : 1
}
foo();
2.3 매크로 작업 과 마이크로 작업 수행 순서:이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.