반응형
자바스크립트에서 비동기 함수들을 사용할 때, 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
반응형