본문 바로가기

개발 일지/JavaScript

JavaScript Promise

Promise 함수는

자바스크립트의 코드/함수 디자인 패턴중 하나 이다. 

new Promise()문법으로 프로미스라는 변수 오브젝트를 하나 생성하면 끝이다.

 

Promise 함수 구조

const promise = new Promise();

promise.then(function(){

}).catch(function(){

});

1. 변수를 만들고

2. 변수.then()  변수안의 코드가  완료 됬을때 실행

3..catch() 는 변수안의 코드가 실패 했을때 실행 한다. 

 

콜백함수가 아닌 Promise를 쓰는 경우

1. 콜백함수와는 다르게 순차적으로 뭔가를 실행할때 코드가 옆으로 길어지지 않는다. 

2. 콜백함수에는 없는 '실패시 특정코드 실행' 이 가능하다. 

      const promise = new Promise((resolve, reject) => {
        setInterval(() => {
          resolve();
        }, 1000);
        // resolve() 가 실행되면 .then 이 실행됨
      });

      promise
        .then(() => {
          console.log("성공");
          //.then 은 프로미스가 성공일 경우 실행할 코드
        })
        .catch(() => {
          console.log("fail");
          // .catch는 프로미스가 에러 날 경우 실행할 코드
        })
        .finally(() => [
          // .finally는 이것저것 다하고 최종적으로 마지막에 실행 할 코드
        ]);

 

 

 

Promise 함수의 특징

1.성공/실패를 판정하는 자판기 Promise()

2.~~일 경우 성공!  ~~가 아닌 경우 실패 ! 이런식으로 Promise 안에 함수 작성

3.관습적으로 매개변수에 resolve 와 reject 로 지정함

4.보통 Ajax, setTimeout, eventListener 를 쓸때 사용함

 

Promise 함수 활용

 
HTML 안에 있는 이미지 로딩이 끝나면 코드 실행
  <body>
    <img
      src="imgURL"id="test"/>
    <script>
          const imageLoading = new Promise((resolve, reject) => {
        document.querySelector("test").addEventListener("load", () => {
          resolve();
        });
        document.querySelector("test").addEventListener("error", () => {
          reject();
        });
      });
      imageLoading
        .then(() => {
          console.log("이미지 로드 성공");
        })
        .catch(() => {
          console.log("이미지 로드 실패");
        })
        .finally(() => {
          console.log("종료");
        });
      </script>
    
  </body>
 
 
 
 
 

'개발 일지 > JavaScript' 카테고리의 다른 글

Parameter 와 Argument  (0) 2023.03.28
호이스팅 과 TDZ  (0) 2023.03.28
REST API가 뭔가요  (0) 2023.03.27
웹페이지가 브라우저에 렌더링 되는 과정  (0) 2023.03.27
JavaScript async/await  (0) 2022.12.20