바닐라코딩

Promise란?

단점이없어지고싶은개발자 2021. 11. 6. 16:57
반응형
let promise = new Promise(function(resolve, reject)...{);

new Promise에 전달되는 함수는 executor(실행자, 실행함수)라고 부른다 

 

- resolve(value) : 일이 성공적으로 끝난 경우 그 결과를 나타내는 value와 함께 호출

- reject(err) : 에러가 발생시 에러 객체를 나타내는 err와 함께 호출

 

promise는 3가지의 내부 프로퍼티를 갖는데 

Pending : 아직 결과값이 도출 안됨

Fulfiled : 보류에서 성공 resolve 호출

Rejected : 에러와 함께 reject호출

 

위 예시로 두 가지를 알 수 있다

1. excutor는 new Promise에 자동으로 그리고 즉각적으로 호출된다

2. reolve, reject함수를 받는데 둘 중 하나는 반드시 호출해야된다

then, catch, finally

promise.then(function(result) {
//결과
}, function(err){
//err
});

.then의 첫 번째 인수는 이행되었을 때 실행되는 함수이고, 두 번째 인수는 이행되지 않았을 때 함수다 

 

catch

에러가 발생한 경우에만 다루고 싶다면 .then(null) 같이 null을 첫 번째 인수로 전달하면 된다 그러지 않으면 .catch(err)를 사용하면 된다. 보통 에러가 발생에 대한 것은 catc로 사용 

 

finally

프라미스가 처리되면 (이행이나 거부) f 가 항상 실행된다는 점에서 .finally(f) 호출은 .then(f, f)와 유사하다.

차이점은 finally에는 핸들러 인수가 없기 때문에 프라미스가 이행되었는지, 거부 되었는지 알 수 없다. 절차를 마무리하는 보편적 동작을 수행

 

프라미스 체이닝

new Promise(function(resolve, reject) {
	setTimeout(() => resolve(1), 1000); //1번
}).then(function (result) { //1번에서 1초 후 결과값이 result에 들어간다 2번

	alert(result);
    return result * 2;
}).then(function (result) { //2번에서 result*2의 값을 가지고 온다 3번

	alert(result); //2
    return result * 2 
}).then(function(result) { //3번에서 result * 2의 값을 갖고온다 4번

	alert(result);
    return result * 2;    
};

then을 타고 핸드러 체인을 따라 reuslt값이 전달된다. 

 

 

반응형

'바닐라코딩' 카테고리의 다른 글

즉시실행함수(IIFE)  (0) 2021.11.06
마지막 강의 Github  (0) 2021.09.19
바닐라코딩 프렙 끝.  (0) 2021.09.19
8주차 과제 - 콜백함수란 무엇인가  (0) 2021.09.12
7주차 과제  (0) 2021.09.05