상탕 과학 기술 전단

2017 단어 일상 학습

JS의 비동기

var now = new Date();
setTimeout(function(){console.log(new Date() - now)},300);
while(new Date() - now <200){}

출력 300
var now = new Date();
setTimeout(function(){console.log(new Date() - now)},300);
while(new Date() - now <1000){}

출력 1000
단일 스레드는 JavaScript의 큰 기능입니다.JavaScript에서 작업은 두 가지가 있는데 하나는 동기화 작업이고 하나는 비동기화 작업입니다.
동기화 작업: 각 작업은 문서가 정의한 순서에 따라 실행 창고에 하나씩 밀어넣으면 현재 작업이 완료되어야 다음 작업을 시작할 수 있습니다.
비동기식 작업: 각 작업을 작업 대기열에 밀어넣고 현재 모든 동기화 작업이 완료된 경우에만 대기열의 작업을 대기열에서 내보냅니다.(주: 이곳의 비동기 작업이 반드시 문서가 정의한 순서에 따라 대기열에 밀어넣는 것은 아니다)
그래서 상술한 예에서 예1, 300ms 후에console는 비동기 대기열에 밀어넣고 while 순환을 동시에 실행합니다. 대기열에 밀어넣을 때while 순환이 끝났고 다른 동기화 작업이 없습니다. 300번 출력합니다. console가 대기열에 있을 때while 순환이 끝나지 않았습니다. 같은 작업이 끝나야 하기 때문에 1000번 출력합니다.
비동기적인 작업이기 때문에 setTimeout의 시간은 while 순환을 막지 않고 개발에서 비교적 자주 사용하는 비동기적인 조작은 다음과 같다. 네트워크 요청, 예를 들어 aaxhttp.get IO 작업, 예를 들어readFile readdir 시간 함수, 예를 들어setTimeout setInterval은 사용자가 발생하는 이벤트 (예를 들어 마우스 클릭, 페이지 스크롤 등) 를 포함합니다.

좋은 웹페이지 즐겨찾기