비동기 자바스크립트란?
3910 단어 codenewbiejavascriptbeginners
먼저 동기 JavaScript 이해
이것은 당신이 한 번에 한 가지 일을 한다는 것을 의미합니다. 이것은 자연 상태의 JavaScript입니다. 모든 언어가 이와 같은 것은 아닙니다. 다음 코드를 고려하십시오.
console.log(1);
console.log(2);
console.log(3);
실행하면 콘솔에 다음과 같이 1, 2, 3이 순서대로 나타납니다.
1
2
3
첫 번째 줄부터 시작하여 완료되면 두 번째 줄로 이동하는 식으로 진행됩니다.
이것은 간단한 프로젝트에서는 잘 작동하지만 실제로 작동하는 웹 앱을 빌드하려면 서버 요청을 시작해야 합니다. 문제는 서버가 언제 우리가 필요한 정보로 응답할지 알 수 없다는 것입니다. 동기 JavaScript를 사용하면 대기라는 문제가 발생합니다.
현재 작업이 완료될 때까지 다음 작업으로 이동할 수 없음을 기억하십시오. 이는 매우 불쾌하고 투박한 사용자 경험을 만듭니다. 이를 해결하기 위해 무엇을 할 수 있습니까?
비동기 JavaScript 입력
비동기 JavaScript를 사용하면 서버에서 응답(즉, "콜백")을 기다리는 동안 다음 작업으로 이동할 수 있습니다. JavaScript 자체는 비동기가 아니라 JavaScript가 해당 기능을 활성화하는 상호 작용할 수 있는 다른 메커니즘이기 때문에 약간 잘못된 이름입니다.
아래 다이어그램을 살펴보겠습니다.
JavaScript는 브라우저에서 실행되며 정보(메모리 힙)와 작업이 완료되는 순서(콜 스택) 저장도 담당합니다. 웹 API, 콜백 큐 및 이벤트 루프는 비동기 코드를 작동시키는 요소입니다.
예시
코드를 처음부터 약간 변경해 보겠습니다.
console.log(1);
setTimeout(()=>console.log(2), 3000);
console.log(3);
이것은 우리에게 다음을 줄 것입니다:
1
3
2
setTimeout()이 실제로 JavaScript가 아니라 API라는 것을 알았을 때 놀랐습니다! console.log(2)(서버 요청 시뮬레이션)를 호출하기 전에 3초(이 경우)를 기다릴 수 있습니다. 한편, 브라우저는 다음 줄로 자유롭게 이동할 수 있습니다. 그래서 '3'이 '2'보다 먼저 나오는 것입니다. 이것은 작동 중인 비동기 JavaScript입니다.
조금 더 깊이 들어가면
위의 내용이 실제로 다이어그램에 따라 어떻게 분류되는지는 다음과 같습니다. 숫자 1부터 시작하여 7까지 계속하십시오.
5-7단계가 진행되는 동안 setTimeout() 함수가 콜백 대기열에 전달되고 이벤트 루프가 호출 스택이 비어 있는지 확인하기 시작했습니다. 그럴 때 setTimeout() 함수는 호출 스택으로 이동되어 정상적으로 실행되었습니다. 그래서 우리는 한 번에 하나 이상의 일을 할 수 있었습니다. 이것은 비동기 자바스크립트입니다.
article의 이 Alexander Zlatkov에 대해 더 자세히 알아보십시오.
Reference
이 문제에 관하여(비동기 자바스크립트란?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gabriellend/what-is-asynchronous-javascript-32g5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)