>웹 프론트엔드 >JS 튜토리얼 >언제, 왜 JavaScript에서 async/await를 .then()과 결합해야 합니까?

언제, 왜 JavaScript에서 async/await를 .then()과 결합해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-03 11:45:291066검색

When and Why Should We Combine async/await with .then() in JavaScript?

Async/Await 및 .then()을 Promise 변환과 결합

JavaScript에서 async/await는 비동기 작업을 처리하기 위한 강력한 메커니즘입니다. . 그러나 특히 Promise를 비동기 함수로 변환할 때 async/await를 .then()과 결합하는 것이 편리할 수 있는 상황이 있습니다.

다음 예를 고려하세요.

<code class="javascript">async apiCall(params) {
    var results = await this.anotherCall()
      .then(results => {
        //do any results transformations
        return results;
      })
      .catch(error => {
        //handle any errors here
      });
    return results;
  }</code>

여기 , anotherCall() 메서드는 .then().catch()를 사용하여 비동기 함수로 변환되는 Promise를 반환합니다. 이를 통해 결과를 반환하기 전에 필요한 변환이나 오류 처리를 수행할 수 있습니다.

일부 개발자는 간결함을 위해 try/catch 대신 .catch()와 함께 async/await를 사용하는 것을 선호합니다. 예를 들면 다음과 같습니다.

<code class="javascript">async function asyncTask() {
  throw new Error('network')
}
async function main() {
  const result = await asyncTask().catch(error => console.error(error));
  console.log('result:', result)
}

main();</code>

이 예에서 asyncTask() 함수는 오류를 발생시키며, 이는 wait 호출 내의 .catch() 메서드에 의해 포착됩니다. 이렇게 하면 오류가 전파되는 것을 방지하고 main() 함수 내에서 오류를 적절하게 처리할 수 있습니다.

원래 Promise가 반환된 경우에도 .then() 메서드가 새 Promise를 생성하고 반환한다는 점에 유의하는 것이 중요합니다. anotherCall()이 이미 해결했습니다. 이 동작은 예상치 못한 부작용을 초래할 수 있습니다. 특히 .then()을 사용하여 여러 Promise를 함께 연결하는 경우 더욱 그렇습니다.

위 내용은 언제, 왜 JavaScript에서 async/await를 .then()과 결합해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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