Promise 체이닝

lee jae hwan·2022년 8월 2일

javascript

목록 보기
81/107

연속적인 비동기작업을 콜백방식으로 수행하면 콜백지옥이 있었는데 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객체를 반환하고 소비자핸들러가 대기하는 연속적인 체이닝방식은 콜백지옥이 발생하지 않는다.

0개의 댓글