자바스크립트 - 비동기 Promise 란?

반응형

 

자바스크립트에서 비동기 함수들을 사용할 때, Promise를 많이 사용합니다.

또 confirm, modal 등 미래에 일어날 일들에 대해서 Promise를 사용해서 개발을 진행하면

편리하게 개발할 수 있는 장점이 있습니다.

 

Promise 란?

Promise 란 비동기 작업을 할 때, 미래에 일어날 결과 또는 실패 값을 나타내는 객체입니다.

 

Promise 에는 세 가지 상태가 있습니다.

  • pending (완료하지 않은 아직 대기 상태)
  • fulfilled (완료)
  • reject (실패)
const getExcelFile = (name, delay = 1000, isSuccess = true) => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      if (isSuccess) {
        resolve(name);
      } else {
        reject('Fail');
      }
    }, delay)
  });
}

 

Promise 연결 하기

then, catch, finally 메서드를 이용하여 비동기 작업 이후 성공, 실패 상태에 따라서 행동을 예약할 수 있습니다.

then

비동기 작업이 완료되었을 때, 첫 번째 파라미터는 성공했을 때 함수, 두 번째 파라미터는 실패했을 때 함수를 예약합니다.

catch

실패했을 때 실행할 함수를 예약합니다.

finally

Promise를 완료 이후 최종적으로 실행될 함수를 예약합니다.

getExcelFile('name1.xls', false).then((res) => {
  console.log('then', res);
}).catch((err) => {
  console.log('catch', err);
}).finally(() => {
  console.log('finally');
});

 

Promise 동시성 관리하기 

Promise는 여러 비동기 작업들을 병렬로 작업할 수 있는 방법이 있습니다.

Promise.all

모든 비동기 작업이 완료하면 결과 값을 반환, 하나라도 실패되면 Promise는 실패합니다.

Promise.allSettled

모든 비동기 작업을 실행합니다.

Promise.race

모든 Promise 작업 중 하나라도 완료 또는 실패한 값을 반환합니다.

Promise.any

모든 Promise 작업 중 하나라도 완료한 값을 반환합니다.

728x90
반응형