> 웹 프론트엔드 > JS 튜토리얼 > Async/Await 함수가 항상 Promise를 반환하는 이유는 무엇입니까?

Async/Await 함수가 항상 Promise를 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-28 15:05:13
원래의
833명이 탐색했습니다.

Why Do Async/Await Functions Always Return Promises?

Async/Await: 약속의 미스터리 공개

async/await 기능 영역을 시작할 때 흥미로운 난제에 직면할 수 있습니다. . 비동기 함수는 항상 Promise 객체를 반환하는 것으로 나타나 직접 콘솔 로깅을 시도할 때 혼란을 야기합니다.

이 현상을 더 깊이 파고들어 그 복잡함을 풀어보겠습니다. 모든 비동기 함수는 Promise 패러다임을 준수하며 작업 결과를 캡슐화하는 Promise 객체를 반환합니다. Wait 문은 Promise가 해결되거나 거부될 때까지 함수 실행을 일시 중지하는 수단으로 사용됩니다.

await가 자동으로 Promise를 풀 것이라고 가정할 수도 있지만 사실은 그렇지 않습니다. Wait를 사용하면 함수가 대기한 후 즉시 해결되는 Promise가 반환됩니다. 그러나 실제 결과에 액세스하려면 Wait 또는 .then()을 사용하여 Promise를 명시적으로 풀어야 합니다.

설명을 위해 비동기 요청을 시뮬레이션하는 다음 코드 조각을 고려해 보세요.

const getJSON = async () => {
  const request = () => new Promise((resolve, reject) => (
    setTimeout(() => resolve({ foo: 'bar'}), 2000)
  ));

  const json = await request();
  return json;
};
로그인 후 복사

결과를 콘솔에 직접 기록하려고 시도하면 출력은 Promise가 됩니다.

console.log(getJSON()); // returns Promise
로그인 후 복사

그러나, .then()을 사용하여 Promise를 풀면 예상되는 JSON 개체가 드러납니다.

getJSON().then(json => console.log(json)); // prints { foo: 'bar' }
로그인 후 복사

결론적으로 비동기 함수는 항상 Promise를 반환하고 Wait는 해결될 때까지 실행을 일시 중지할 뿐입니다. 결과를 얻으려면 wait 또는 .then()을 사용한 명시적인 언래핑이 필요합니다. 이 메커니즘은 Promise 모델의 무결성을 보장하고 Promise 결과에 대한 직접 액세스가 허용될 경우 발생할 수 있는 예측할 수 없는 동작을 방지합니다.

위 내용은 Async/Await 함수가 항상 Promise를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿