동기작업 : 하나의 작업을 실행하고 마친 뒤에 다음 작업을 순차적으로 실행(블로킹)
비동기 작업: 메인 흐름은 멈추지 않은 상태에서 특정 작업들을 백그라운드에서 처리하여 동시에 처리하는 것처럼 실행됨(넌블로킹)
비동기 처리를 하기 위한 흔한 방법은 콜백 함수를 이용하는 것
하지만 특정 비동기 처리 이후 수행할 내용을 또 정의해야 하는 경우 콜백함수의 중첩이 생기고 이러한 것들이 많이 추가되면 콜백 지옥이 펼쳐짐
function increase(number, callback) {
setTimeout(() => {
const result = number + 10;
if(callback) {
callback(result);
}
}, 1000);
}
/* 단순히 한번 정도는 난해하진 않다. */
increase(0, result => console.log(result));
여러번 순차적으로 결과들을 콜백 함수로 던지기 위해서는 중첩을 사용해서 호출 가능함
console.log('start...');
increase(0, result => {
console.log(result);
increase(result, result => {
console.log(result);
increase(result, result => {
console.log(result);
increase(result, result => {
console.log(result);
increase(result, result => {
console.log(result);
console.log('end');
});
});
});
});
});
console.log('메인')
왜 Promise 객체를 사용하는가?