최상위 수준에서 async/await 사용
질문:
다음이 수행되는 이유는 무엇입니까? 코드가 아니다 일합니까?
async function main() { var value = await Promise.resolve('Hey there'); console.log('inside: ' + value); return value; } var text = main(); console.log('outside: ' + text);
답변:
코드가 작동하지 않는 이유는 main이 Promise를 반환하기 때문입니다. 모든 비동기 함수는 Promise를 반환합니다.
최상위 수준에서 async/await를 사용하려면 세 가지 옵션이 있습니다:
1. 모듈의 최상위 대기:
ES2022에서는 모듈에서 최상위 대기를 사용할 수 있습니다. 이를 통해 모듈 상단에서 wait 구문을 사용할 수 있습니다. 그러나 모듈은 여러분이 기다리는 약속이 확정될 때까지 로딩을 완료하지 않습니다. Promise가 거부되면 모듈이 로드되지 않습니다.
const text = await main(); console.log(text);
2. 절대 거부하지 않는 최상위 비동기 기능:
절대 거부하지 않는 최상위 비동기 기능 사용("처리되지 않은 거부" 오류를 원하지 않는 한):
(async () => { try { const text = await main(); console.log(text); } catch (e) { // Handle errors } })();
3. then and catch:
main에서 반환된 promise를 처리하려면 .then() 및 .catch()를 사용하세요.
main() .then(text => { console.log(text); }) .catch(err => { // Handle errors });
세 가지 옵션 모두 promise 거부 또는 처리가 필요하다는 점에 유의하세요. 비동기 예외를 전달할 호출자가 없기 때문입니다.
위 내용은 JavaScript에서 최상위 Async/Await가 작동하지 않는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!