Promise 생성자는 Promise의 이행 논리를 정의하는 실행자 함수를 허용합니다. 한 가지 중요한 질문이 생깁니다. 이 실행기 함수는 비동기적으로 실행됩니까, 아니면 동기적으로 실행됩니까?
동작은 Promise 자체의 구현에 따라 다릅니다. 그러나 Promises에 대한 ES6 표준에서는 Promise의 이행이 항상 비동기식이라고 명시적으로 명시하고 있습니다.
사양을 참조하면 실행자 함수(우리의 경우 y 함수) )은 실제로 동기식으로 실행됩니다(사양의 10단계 참조). 그러나 promise.then(...)과 같은 Promise의 .then()에 대한 후속 호출은 항상 비동기식으로 실행됩니다("PerformPromiseThen" 알고리즘의 8단계 참조).
이러한 .then() 호출의 비동기 특성에는 여러 가지 의미가 있습니다.
다음 코드 조각을 고려하세요.
<code class="javascript">function y(resolve, reject) { console.log("Result"); resolve(); } var promise = new Promise(y); promise.then(() => { console.log("Then handler executed after the synchronous execution of y"); });</code>
이 예에서는 y 함수가 동기적으로 실행됩니다. 그러나 .then() 핸들러는 이벤트 루프가 완료되면 비동기적으로 실행됩니다. 이 코드의 출력은 다음과 같습니다.
Result Then handler executed after the synchronous execution of y
위 내용은 Promise 생성자의 실행자 함수는 동기식인가요, 비동기식인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!