JavaScript/JavaScript
비동기 - 콜백과 프로미스 객체의 이해
IT Blue
2021. 8. 3. 11:06
동기
동기 방식 (Synchronous)
- 코드를 작성한 순서대로 동작하는 것
function a() {
console.log('A')
}
function b() {
console.log('B')
}
a()
b()
/* 실행 결과 */
A
B
비동기 방식 (Asynchronous)
- 특정 코드의 연산이 끝날 때까지 기다리지 않고, 그동안 다른 코드를 실행
- 실행 순서가 보장되지 않는다
- 비동기 처리의 방식은 setTimeOut, callback, promise 등이 있다
비동기 - 콜백과 프로미스 객체의 이해
콜백 함수 (callback)
- 특정 함수에 매개변수로 전달되는 함수 (데이터처럼 사용되는 함수)
- 실행 순서를 보장
- 콜백이 많아지면 관리하기가 불편해진다 (콜백 지옥)
function a(callback) {
setTimeout(() => {
console.log('A')
callback()
}, 1000)
}
function b() {
console.log('B')
}
a(function () {
b()
})
/* 실행결과 */
A
B
Promise 객체
- 자바스크립트 비동기 처리에 사용되는 객체
- 비동기 연산 결과를 알려주기 위해서 사용
- Callback 보다 코드가 간결해지고 가독성이 좋아진다
- async & await 키워드를 통해서 비동기의 내용 처리 가능 (실행 순서 보장)
function a() {
// promise: 약속의 객체!
return new Promise(function (resolve) {
setTimeout(function () {
console.log('A')
resolve()
}, 1000)
})
}
function b() {
console.log('B')
}
async function test() {
await a()
b()
}
test()
/* 실행결과 */
A
B
참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise
Promise - JavaScript | MDN
Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다.
developer.mozilla.org