비동기 프로그래밍에서 async/await 기능을 사용하면 동기 작업과 비동기 작업 간을 원활하게 전환할 수 있습니다. 그러나 최상위 수준에서 비동기 코드를 실행할 때는 특정 사항을 고려해야 합니다.
비동기 함수를 정의하면 Promise가 반환됩니다. 최상위 수준에서 이 함수를 호출하면 해결된 값이 아닌 Promise가 즉시 반환됩니다. 이것이 콘솔이 비동기 작업을 실행하기 전에 Promise 개체를 출력하는 이유입니다.
이 문제를 해결하려면 다음과 같은 몇 가지 옵션이 있습니다.
1. 최상위 Await(ES2022 제안)
최신 환경에서는 모듈에서 최상위 Await를 사용할 수 있습니다. 이를 통해 모듈 범위에서 직접 Promise를 기다릴 수 있습니다.
const text = await main(); console.log(text); // Logs the resolved value
2. 처리되지 않은 거부가 포함된 최상위 비동기 함수
거부하지 않는 최상위 비동기 함수를 정의할 수 있습니다. 이는 처리되지 않은 거부 오류를 방지하지만 오류를 명시적으로 처리하지는 않습니다.
(async () => { try { const text = await main(); console.log(text); // Logs the resolved value } catch (e) { // Error handling (optional) } })();
3. then() 및 catch()
위 옵션 중 어느 것도 적합하지 않은 경우 Promise의 then() 및 catch() 메서드를 사용하여 결과를 처리할 수 있습니다.
main() .then((text) => { console.log(text); // Logs the resolved value }) .catch((err) => { // Error handling });
참고: 모든 경우에 처리되지 않은 거부 오류를 방지하려면 거부를 올바르게 처리하는 것이 중요합니다.
위 내용은 JavaScript의 최상위 수준에서 비동기 코드를 올바르게 실행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!