본문 바로가기
Q&A해결2018년 5월 18일1분 읽기

JavaScript 비동기 처리 콜백 지옥 해결법

자
자바스크립트입문
조회 2209댓글 4

Node.js에서 파일 읽고 → DB 저장하고 → 이메일 보내는 코드를 작성했는데 콜백이 5단계나 중첩됩니다. 가독성이 너무 안 좋은데 어떻게 해결하나요?

댓글 4

김김영삼8년 전

콜백 지옥 → Promise → async/await 순으로 진화합니다:

// ❌ 콜백 지옥
readFile(path, (err, data) => {
saveDB(data, (err, result) => {
sendEmail(result, (err, res) => {
console.log("완료")
})
})
})

// ✅ Promise 체인
readFile(path)
.then(data => saveDB(data))
.then(result => sendEmail(result))
.then(() => console.log("완료"))
.catch(err => console.error(err))

// ✅✅ async/await (가장 권장)
async function process() {
try {
const data = await readFile(path)
const result = await saveDB(data)
await sendEmail(result)
console.log("완료")
} catch (err) {
console.error(err)
}
}

async/await가 가장 읽기 쉽고 에러 처리도 try/catch로 깔끔합니다.

자자바스크립트입문(guest)8년 전
async/await 너무 깔끔하네요! 근데 이게 모든 브라우저에서 지원되나요?
김김영삼8년 전
Node.js 8+, Chrome/Firefox 최신 버전에서 지원됩니다. IE는 안 되지만 Babel로 트랜스파일하면 됩니다. 2018년 기준으로 이미 실무에서 많이 쓰고 있어요.
자자바스크립트입문(guest)8년 전
Babel까지! 자세한 답변 감사합니다!
Ctrl+Enter로 등록