[ES6] Promise

DevHwanㅤ

·

2018. 10. 3. 23:00

Promise


Promise는 지연 함수와 비동기 연산을 제어할 수 있게 해주는 클래스이다. 자바스크립트는 비동기 처리를 위한 하나의 패턴으로 콜백

함수를 사용하는데 콜백 패턴은 가독성이 나쁘고 비동기 처리 중 에러의 예외 처리가 곤란하고 여러개의 비동기 처리가 곤란한

단점이 있다. 이러한 단점을 극복한 것이 Promise 이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
let cnt = 0;
 
let promise = new Promise(function(resolve, reject){ // Promise는 new 연산자 뒤에 Promise 함수를 호출 선언
    setTimeout(function(){ // 지연함수를 Promise 내부에서 관리
          cnt++;
          resolve(cnt); // 결과값을 전달
    })
});
 
promise.then(function($cnt){
    cnt = $cnt;
      console.log(cnt);
})
cs

Promise가 생성되면 executor 함수가 실행되고 내부에서 지연 함수 또는 비동기 연산을 기다리다 이행여부를 결정하고 이행(fulfill) 

또는 거절(reject)을 생성자에 전달하는데, 이행일 경우 전달받은 resolve 함수를 호출하여 인자로 결과값(value)을 전달하고, 거절일

경우 전달받은 reject 함수를 호출해서 인자를 거절 이유(reason)을 전달한다.


비동기 연산 또는 지연 함수 에서 활용은 executor 함수에서 전달받아 필요한 시점에 사용할 수 있어 타이밍 조절이 쉽고 

코드 가독성이 좋아졌다.


반응형

'JavaScript > Es6' 카테고리의 다른 글

[ES6] Module  (0) 2018.10.04
[ES6] For of 문 이터러블 규약  (0) 2018.09.02
ES6 에서 변수 선언 let  (0) 2018.06.20