JavaScript에서 `return promise` 대신 `return wait promise`를 사용해야 하는 경우는 언제인가요?

Susan Sarandon
풀어 주다: 2024-11-17 22:58:02
원래의
313명이 탐색했습니다.

 When should I use `return await promise` over `return promise` in JavaScript?

Return Wait Promise와 Return Promise

JavaScript에서 비동기 함수의 Return Wait Promise와 Return Promise의 차이는 미미한 경우가 많습니다. 그러나 아래에서 살펴보는 것처럼 서로 다른 동작을 보이는 특정 시나리오가 있습니다.

지연 및 관찰 가능성:

제공된 코드 예제에서 두 접근 방식을 모두 사용하는 Delay1Second 함수는 다음을 반환합니다. 1초 지연 후 해결되는 프라미스입니다. 두 버전 모두 관찰 가능한 결과 측면에서 유사하게 작동하는 것으로 보입니다.

오류 처리:

일반적으로 두 접근 방식 모두 비동기 함수 내의 오류 처리 또는 전파에 영향을 미치지 않습니다. 호출자에게 오류가 발생했습니다. 두 경우 모두 함수의 Promise에서 오류가 발생합니다.

메모리 소비:

직접적으로 관찰할 수는 없지만 Return Wait Promise 버전은 메모리 소비를 약간 증가시킬 수 있습니다. 반품 약속 접근 방식. 이는 실행 중에 추가 Promise 객체가 생성되어 대기할 수 있기 때문입니다.

Try-Catch 블록:

try 내에서 이러한 접근 방식을 사용할 때 미묘하지만 중요한 차이점이 발생합니다. - 블록을 잡아라. 다음 예를 고려하십시오.

async function rejectionWithReturnAwait() {
  try {
    return await Promise.reject(new Error());
  } catch (e) {
    return "Saved!";
  }
}

async function rejectionWithReturn() {
  try {
    return Promise.reject(new Error());
  } catch (e) {
    return "Saved!";
  }
}
로그인 후 복사

rejectionWithReturnAwait에서 대기된 거부는 예외를 발생시키며 이는 catch 블록에서 포착됩니다. 결과적으로 함수는 "Saved!"로 확인됩니다.

반대로, RejectionWithReturn에서는 비동기 함수 내에서 기다리지 않고 직접 거부가 반환됩니다. 이는 catch 블록이 실행되지 않고 대신 호출자가 거부를 수신함을 의미합니다.

결론:

반환 대기 약속과 반환 약속의 차이는 일반적으로 무시할 수 있습니다. , try-catch 블록을 사용할 때 잠재적인 영향을 인식하는 것이 중요합니다. 대부분의 경우 두 가지 접근 방식 모두 최소한의 영향으로 사용할 수 있습니다. 그러나 try-catch 블록 내에서 정확한 오류 처리를 위해서는 비동기 함수 내에서 거부가 포착되고 올바르게 처리되도록 return wait promise를 선호해야 합니다.

위 내용은 JavaScript에서 `return promise` 대신 `return wait promise`를 사용해야 하는 경우는 언제인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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