>웹 프론트엔드 >JS 튜토리얼 >Promise 생성자의 실행자 함수는 동기식인가요, 비동기식인가요?

Promise 생성자의 실행자 함수는 동기식인가요, 비동기식인가요?

Patricia Arquette
Patricia Arquette원래의
2024-10-30 12:06:26518검색

 Is the Promise Constructor’s Executor Function Synchronous or Asynchronous?

Promise 생성자 콜백의 비동기 실행

Promise 생성자는 Promise의 이행 논리를 정의하는 실행자 함수를 허용합니다. 한 가지 중요한 질문이 생깁니다. 이 실행기 함수는 비동기적으로 실행됩니까, 아니면 동기적으로 실행됩니까?

자세한 답변

동작은 Promise 자체의 구현에 따라 다릅니다. 그러나 Promises에 대한 ES6 표준에서는 Promise의 이행이 항상 비동기식이라고 명시적으로 명시하고 있습니다.

사양을 참조하면 실행자 함수(우리의 경우 y 함수) )은 실제로 동기식으로 실행됩니다(사양의 10단계 참조). 그러나 promise.then(...)과 같은 Promise의 .then()에 대한 후속 호출은 항상 비동기식으로 실행됩니다("PerformPromiseThen" 알고리즘의 8단계 참조).

의미

이러한 .then() 호출의 비동기 특성에는 여러 가지 의미가 있습니다.

  • 실행자 함수가 변수를 수정하거나 부작용을 수행하는 경우 해당 변경 사항이 .then( ) 핸들러.
  • .then() 핸들러는 현재 이벤트 루프가 완료된 후 실행되어야 하는 작업을 예약하는 데 사용할 수 있습니다.
  • 이 비동기 동작은 Promise를 사용하여 여러 비동기식을 연결할 수 있음을 보장합니다. 작업을 실행하고 결과를 순차적으로 처리합니다.

예제 코드

다음 코드 조각을 고려하세요.

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.