문제
Promise를 사용하는 다음 JavaScript 코드를 고려하세요.
<code class="javascript">Promise.resolve('A') .then(function(a){console.log(2, a); return 'B';}) .then(function(a){ Promise.resolve('C') .then(function(a){console.log(7, a);}) .then(function(a){console.log(8, a);}); console.log(3, a); return a;}) .then(function(a){ Promise.resolve('D') .then(function(a){console.log(9, a);}) .then(function(a){console.log(10, a);}); console.log(4, a);}) .then(function(a){ console.log(5, a);}); console.log(1); setTimeout(function(){console.log(6)},0);</code>
출력은 다음과 같습니다.
<code class="text">1 2 "A" 3 "B" 7 "C" 4 "B" 8 undefined 9 "D" 5 undefined 10 undefined 6</code>
질문은 실행 순서, 특히 숫자 1, 2, 3, 7 등에 관한 것입니다. 예상되는 선형 순서 1, 2, 3, 4, ...가 아닌 이유는 무엇입니까?
JavaScript 약속은 특정 실행 규칙을 따릅니다.
주어진 코드에서:
.then() 핸들러 내에서 생성된 독립적인 약속 체인에는 예측 가능한 실행 순서가 없으므로 3, 7, 4, 8, 9, 5, 10의 순서는 다음에 따라 달라집니다. 특정 Promise 엔진 구현.
비동기 작업에 대한 특정 실행 순서를 보장하려면 다음을 수행하는 것이 좋습니다.
주어진 예에서 .then(에서 Promise.resolve('C') Promise를 반환합니다. ) 4행의 핸들러는 약속 체인을 연결하고 예상되는 순차적 실행 순서를 생성합니다.
위 내용은 JavaScript Promise 실행 순서가 예상대로 선형이 아닌 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!