반응형
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 |