javascript - promise 및 setTimeout의 실행 순서에 대한 혼동
高洛峰
高洛峰 2017-06-26 10:57:47
0
3
1123
으아악

위 코드의 결과가 1,2가 아닌 2,1인 이유는 무엇입니까?
작업 대기열에 setTimeout이 먼저 추가되어 있지 않나요?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(3)
黄舟

구체적으로 말하면 setTimeout有一个4ms的最短时间,也就是说不管你设定多少,反正最少都要间隔4ms才运行里面的回调(当然,浏览器有没有遵守这个规范是另外一回事儿)。而Promise의 비동기식에는 이러한 문제가 없습니다.

구체적인 구현 측면에서 두 비동기 대기열은 서로 다릅니다. Promise가 위치한 비동기 대기열의 우선순위가 더 높습니다.
자세한 내용은 Promise의 JavaScript에서 이벤트 루프, 작업 및 마이크로태스크 살펴보기

문서를 참조하세요.
某草草

Promise的任务会在当前事件循环末尾中执行,而setTimeout의 작업은 다음 이벤트 루프

에서 실행됩니다.
淡淡烟草味

읽어보시면 "당신이 모르는 JS(2권)" 1.5절 정도 내용을 이해하실 수 있을 겁니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!