비동기 자바스크립트 및 작동 방식👩💻
우리는 javascript가 전역 실행 컨텍스트를 가진 호출 스택을 가지고 있다는 것을 알고 있습니다. 함수가 실행되면 새 실행 컨텍스트가 스택에 푸시되고 함수가 반환되면 팝됩니다.
이제 브라우저에서 사용할 수 있는 많은 기능이 있으며, 이 기능은 시간이 걸리고 스택에 푸시되면 이를 차단할 수 있습니다. 이를 기본 스레드 차단이라고도 합니다. 따라서 이러한 기능은 비동기식으로 만들어졌습니다.
setTimeout
가 포함된 이 예를 살펴보십시오.console.log("hello, let's go!")
setTimeout(()=>{
console.log("We are back for a quest.")
},7000)
function greet(){
console.log("Adventure time...")
}
greet();
setTimeout
의 콜백 화살표 함수는 7000ms 후에 콘솔에 표시됩니다. 어떻게 이런 일이 발생하는지 살펴보겠습니다.Async Javascript의 비하인드 스토리:
우리는 이 수치를 해결하고 모든 것을 이해할 것입니다.
console.log("hello, let's go!")
가 실행됩니다. setTimeout()
(JS의 일부가 아닌 웹 API)에 도달하면 브라우저에서 제공하는 타이머가 코드에서와 같이 7000ms로 설정되고 실행되지 않습니다. 콜백 함수는 타이머가 꺼지면 작업 대기열로 푸시됩니다.
function greet()
를 만납니다. 함수형 프로그래밍은 JS의 가장 강력한 제품군이므로 새로운 실행 컨텍스트가 생성되고 호출 스택에 푸시됩니다. 이벤트 루프의 목적은 호출 스택이 비어 있는지 여부를 확인하는 것입니다. 스택이 비어 있고(&가 비어 있을 때만) 타이머가 작동하는 즉시 큐에서 콜백 함수를 제거하고 실행을 위해 호출 스택에 푸시합니다.
콜백 함수는 타이머가 꺼질 때까지 웹 API 환경에 있습니다.
there is also multitask queue that basically handles functions with higher priority, involving promises and change in the DOM tree.
🌟Using microtasks in JS by MDN Docs
🌟Asyn Javascript by James Q
Reference
이 문제에 관하여(비동기 자바스크립트 및 작동 방식👩💻), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aishanipach/async-javascript-how-it-works-16fp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)