728x90
반응형
비동기를 처리하기위해 Promise객체가 만들어 졌습니다.
완료되면 하나의 값을 결과로 반환하는데, 실패하게되면 정상적으로 처리되었을때의 값 대신 실패한 이유를 반환해 줄 수 도 있습니다.
Promise는 세가지의 상태를 나타냅니다
1. 대기중(pending) - 아직 처리가 완료되지 않은 상태입니다.
2. 이행됨(fulfilled) - 비동기 처리가 성공적으로 완료되어 결과 값이 나온 상태입니다.
3. 거부됨(rejected) - 비동기 처리가 실패한 상태입니다.
Promise는 두가지의 메서드를 가지는데
1. then (onFulfilled, onReject) - 성공하였을때 호출될 함수를 정의 합니다. 첫번째 인자(onFulfilled)에는 성공적으로 이행되었을때 호출되고 두번째 인자(onRecject)는 실패 했을때 호출됩니다.
2. catch (onReject) - 비동기 처리가 실패했을때 호출될 함수를 등록합니다.
function promiseMethod(isBool) {
return new Promise((resolve, reject) => {
console.log('promise Start');
if (isBool) {
resolve({
result: 'promise-resolve',
});
} else {
reject(new Error('Error'));
}
});
}
const promise1 = promiseMethod(true);
const promise2 = promiseMethod();
promise1.then(p => console.log(p));
promise2.then(p => console.log(p)).catch(e => console.error(e));
위와 같이 코드를 만들었다고 가정해봅시다.
결과가 과연 어떻게 나왔을까요?
promise Start
{ result: 'promise-resolve' }
promise Start
Error: Error
콘솔창에는 이렇게 나오게 됩니다.
true일 경우 then 으로 들어가게 됩니다.
728x90
반응형