> 웹 프론트엔드 > JS 튜토리얼 > 명시적인 반환이 없더라도 비동기 함수는 항상 Promise를 반환합니까?

명시적인 반환이 없더라도 비동기 함수는 항상 Promise를 반환합니까?

Patricia Arquette
풀어 주다: 2024-12-17 21:48:12
원래의
467명이 탐색했습니다.

Do Async Functions Always Return Promises, Even Without Explicit Returns?

비동기 함수의 암시적 약속 반환

비동기 함수가 Wait 식의 값을 직접 반환한다는 가정과 달리 실제로는 항상 반환을 반환합니다. 약속. 명시적인 return 문이 없는 경우 반환할 값은 Promise에 자동으로 래핑됩니다. 이는 약속되지 않은 값을 포함한 모든 반환 값에 적용됩니다.

예:

async function increment(num) {
  return num + 1;
}

increment(3).then(num => console.log(num)); // Logs 4
로그인 후 복사

이 시나리오에서는 숫자가 반환되더라도 여전히 약속 안에 캡슐화되어 있습니다. 이는 then() 메서드를 통해 반환된 값에 액세스할 때 분명합니다.

기타 경우:

  • 반환 문이 없는 함수도 암시적으로 다음에 대한 약속을 반환합니다. 정의되지 않은 값.
  • await 표현식과 관련된 비동기 함수는 wait에서 반환된 값에 대한 약속을 반환합니다.

예외:

Promise가 비동기 함수 내에서 명시적으로 반환될 때 이 규칙의 예외가 발생합니다. 이러한 경우 Promise는 다시 포장되지 않습니다.

예:

async function increment(num) {
  return new Promise(resolve => resolve(num + 1));
}

increment(3).then(num => console.log(num)); // Logs 4
로그인 후 복사

결론:

동안 이 동작은 전통적인 JavaScript 반환 문에서 벗어날 수 있으며 ES6의 생성기 개념과 일치합니다. return 문으로 정확한 값을 반환합니다.

위 내용은 명시적인 반환이 없더라도 비동기 함수는 항상 Promise를 반환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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