Promise 생성자 콜백의 비동기 실행
질문:
다음 코드 조각에서:
<code class="python">function y(resolve, reject) { console.log("Result"); resolve(); } var promise = new Promise(y);</code>
y 함수는 비동기적으로 실행되나요, 아니면 동기적으로 실행되나요?
답변:
Promise 생성자 콜백의 실행은 특정 구현에 따라 다릅니다. Promises/A 사양의
ES6 사양의 섹션 25.4.3.1에는 다음과 같이 명시되어 있습니다.
"executor가 예외를 발생시키지 않으면 Promise 객체는 두 단계로 구성해야 합니다."
실행기 함수는 세 개의 인수를 사용하여 호출해야 합니다.
그러나 Promise에 대한 .then() 호출의 후속 실행은 항상 비동기식입니다. 이는 "PerformPromiseThen" 알고리즘을 설명하는 ES6 사양의 섹션 25.4.5.3.1에서 분명하게 드러납니다.
"Promise의 [[PromiseState]] 내부 슬롯 값이 "fulfilled"인 경우... "
"...Perform EnqueueJob("PromiseJobs", PromiseReactionJob, «fulfillReaction, value»)."
마찬가지로 Promise가 거부되면 알고리즘은 비동기 작업 대기열에 넣기를 수행합니다.
결론:
따라서 Promise 생성자에 전달된 함수는 동기적으로 실행되는 반면, 후속 .then() 호출은 ES6 사양에 따라 항상 비동기적으로 실행됩니다.
위 내용은 Promise 생성자 콜백은 동기식으로 실행되나요, 아니면 비동기식으로 실행되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!