브라우저 이벤트 핸들러와 async/await: 핵심 이해 가이드 #34
yunseorim1116
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
브라우저 이벤트 핸들러와 async/await: 핵심 이해 가이드
왜 이벤트 핸들러에서 async/await를 사용하면 문제가 될까?
이벤트 핸들러에서
async/await를 사용할 때 발생하는 문제와 그 이유를 명확하게 이해해 봅시다.핵심 개념 정리
1. 이벤트 핸들러의 호출자는 브라우저다
addEventListener는 호출자가 아닙니다.addEventListener는 단지 핸들러를 등록만 하는 메서드입니다.myHandler를 호출하는 것은 사용자 이벤트(클릭 등) 발생 시 브라우저의 내부 이벤트 처리 시스템입니다.2. async 함수는 항상 Promise를 반환한다
async키워드가 붙은 함수는 명시적으로 Promise를 반환하지 않아도 항상 Promise 객체 반환async를 붙이면 해당 함수는 브라우저에게 Promise를 반환하게 됨3. await의 동작 원리
await키워드를 만나면 함수 실행이 일시 중단됨문제의 정확한 원인
다음 코드를 살펴보세요:
실행 순서:
event.preventDefault()실행 (이 시점에서는 정상 작동)await fetchData()실행:fetchData()가 Promise 반환processData(data)실행자주 혼동되는 부분 정리
"함수 실행이 일시 중단된다"는 의미:
"브라우저는 Promise를 특별히 처리하지 않는다"는 의미:
해결책: then() 방식 사용하기
이 방식이 작동하는 이유:
preventDefault()가 이벤트 처리 과정에서 적절한 시점에 처리 됩니다.key: 이미 완료된 상태(then) 과, 일시 중지된 상태(await)를 구분하기.
Beta Was this translation helpful? Give feedback.
All reactions