상탕 과학 기술 전단
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은 사용자가 발생하는 이벤트 (예를 들어 마우스 클릭, 페이지 스크롤 등) 를 포함합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
데이터 구조의 8 에서 자주 사용 되 는 정렬using namespace std; const int maxn = 20; int a[maxn], b[maxn], n; int cnt; // void PrintSequence(int *s) { for (int i =...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.