Promise
프로미스는 자바스크립트 비동기 처리에 사용되는 객체이다. 여기서 자바스크립트의
비동기 처리란 '특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드를 실행하는 것을 말한다'
동기, 비동기
외울 때 정. 처. 기(정보 처리 기사)를 공부했어서 그런지 선점 비선점으로 공부하니 쉬웠고
전에 교수님의 화장실 비유 때문에 웃어넘긴 기억도 생각났다.
화장실에 변기는 한 명만 사용할 수 있고 나올 때까지 다른 사람이 선점하지 못한다! (동기 되지 못한다.)
반면에 비동기는 사용중인 변기는 놔두고 다른 층 화장실을 간다고 생각했다.
프로미스 기본 코드
function getName(callback){
return new Promise((resolve, reject) => {
//성공코드 시 resolve();
//실패코드 시 reject();
});
};
프로미스 상태(states)
프로미스를 사용할 때 꼭 알아야 할 개념은 상태(states)입니다.
- Pending(대기) : 비동기 처리 로직이 아직 완료되지 않은 상태
- Fulfilled(이행) : 비동기 처리가 완료되어 프로미스가 결과 값을 반환해준 상태
- Rejected(실패) : 비동기 처리가 실패하거나 오류가 발생한 상태
Pending(대기) 상태
new Promise();
new Promise() 메서드 호출 즉시 Pending(대기) 상태가 된다.
그 다음으로 Promise() 메서드를 호출할 때 콜백 함수를 선언할 수 있고 콜백 함수의 인자는
resolve와 reject 가 있다.
new Promise(function(resolve, reject) {
//
});
Fulfilled(이행 or 성공) 상태
콜백 함수 인자 resolve를 아래와 같이 실행하면 이행(성공) 상태가 된다. 이행상태에서 then함수를 사용하여 결과값을 넘겨받을 수 있다.
new Promise(function(resolve, reject) {
resolve();//이행 상태
});
//==========================================================
//ex)
function statusList() {
return new Promise(function (resolve, reject) {
let status = "기분조아";
resolve(status);
});
}
statusList().then(function (resolvedStatus) {
console.log(resolvedStatus);
});
Rejected(실패) 상태
콜백함수 인자를 reject()로 받을 시 실패 상태가 되고 실패 이유를 chtch() 함수로 받을 수 있다.
new Promise(function(resolve, reject) {
reject(); //실패 상태
});
//=====================================================
//ex)
function statusList() {
return new Promise(function (resolve, reject) {
reject(new Error("받아오기 실패"));
});
}
statusList()
.then()
.catch(function (err) {
console.log(err);
});
'IT > JavaScript' 카테고리의 다른 글
[JavaScript] 증감 버튼 연산 페이지 만들기 (0) | 2022.02.16 |
---|---|
위크맵 and 위크셋 (0) | 2022.02.11 |
var, let 차이점 (0) | 2022.02.02 |
가비지 컬렉션 (0) | 2022.02.01 |
함수란? (2) | 2022.01.31 |