IT/JavaScript

[JavaScript] Promise

U_Flix 2022. 3. 6.

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

댓글