연속적인 비동기작업을 콜백방식으로 수행하면 콜백지옥이 있었는데 promise객체를 수행하면 어떻게 되는지 알아보자
new Promise(function(resolve, reject) {
// 비동기로 1초후 값을 반환한다.
setTimeout(() => resolve(1), 1000);
}).then(function(result) {
console.log(result); // 1
// 비동기작업완료후 새로운 비동기작업 시작
return new Promise((resolve)=>{
setTimeout(() => resolve(2), 1000);
});
}).then(function(result) {
console.log(result); // 2
// 비동기작업완료후 새로운 비동기작업 시작
return new Promise((resolve)=>{
setTimeout(() => resolve(3), 1000);
});
}).then(function(result) {
console.log(result); // 3
})
생산자는 비동기작업의 promise객체를 반환하면 작업완료후 소비자핸들러가 호출된다.
새로운 비동기작업의 promise객체를 반환하고 소비자핸들러가 대기하는 연속적인 체이닝방식은 콜백지옥이 발생하지 않는다.