Promise 관련 정리





Promise 정리


Promise 관련 정리

  • Promise 관련 순차적으로 실행되는 Promise 간에 파라미터 전달 과정에서 잘 이해가 안되는 부분이 있어서 찾아보다가 정리!

참고자료: http://yubylab.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-Promise-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

function firstPromise(param) {
  console.log('first promise param:', param);
  return new Promise(function (resolve, reject) {
    if (param) {
      resolve('first promise resolve');
    } else {
      reject('first promise reject');
    }
  });
}
 
function secondPromise(param) {
  console.log('second promise param:', param);
  return new Promise(function (resolve, reject) {
    if (param) {
      resolve('second promise resolve');
    } else {
      reject('second promise reject');
    }
  });
}
 
function finalHandler(param) {
  console.log('final handler param:', param);
  return new Promise(function (resolve, reject) {
    if (param) {
      resolve('final handler resolve');
    } else {
      reject('final handler reject');
    }
  });
 
}
 
 
/**
 * Promise 한개일 때
 * 
 * ====================== 결과 ======================
 *  first promise param: first
 *  first promise resolve
 * =================================================
 */
firstPromise('first')
  .then(function (result) {
    console.log('result: ', result);
  });
 
 
/**
 * then 안에서 Promise 명시적으로 return 할 경우
 * : firstPromise -> secondPromse -> finalHandler
 * 
 * ====================== 결과 ======================
 *  first promise param: first
 *  second promise param: first promise resolve
 *  final handler param: second promise resolve
 * =================================================
 */
firstPromise('first').then(function (param) {
  return secondPromise(param);
}).then(finalHandler);
 
// 위 코드와 동일
firstPromise('first').then(param => secondPromise(param)).then(finalHandler);
 
/**
 * then 안에서 Promise return 안할 경우
 * : firstPromise -> sencondePromise, finalHanlder (sencondePromise에서 undefined 리턴)
 * 
 * ====================== 결과 ======================
 *  first promise param: first
 *  second promise param: first promise resolve
 *  final handler param: undefined
 * =================================================
 */
firstPromise('first').then(function (param) {
  secondPromise(param);
}).then(finalHandler);
 
 
/**
 * then 안에서 Promise 포함된 함수 실행
 * : firstPromise, secondPromise -> finalHandler (firstPromise의 리턴값을 finalHandler에서 받음)
 * 
 * ====================== 결과 ======================
 *  first promise param: first
 *  second promise param: undefined
 *  final handler param: first promise resolve
 * =================================================
 */
firstPromise('first').then(secondPromise()).then(finalHandler);
 
 
/**
 * then 안에서 Promise 전달
 * : firstPromise -> secondPromise -> finalHandler
 * 
 * ====================== 결과 ======================
 *  first promise param: first
 *  second promise param: first promise resolve
 *  final handler param: second promise resolve
 * =================================================
 */
firstPromise('first').then(secondPromise).then(finalHandler);


댓글

이 블로그의 인기 게시물

ansible ssh 접속 에러 해결

OpenWeatherMap API 이용해서 날씨 데이터 가져오기