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