본문 바로가기

자바스크립트

promise

비동기 작업을 순차적으로 하게되면 콜백 지옥이 되어 가독성이 떨어진다.

그래서  promise가 나오게 되었다.

 

-코드가 병렬로 되어있어 가독성이 높고 오류처리등에 대해서도 추가되었다. es6에서는 promise가 표준객체가 되었다.

-promise 패턴은 비동기 작업을 순차적으로 처리한다.

-new 키워드로 선언과 동시에 실행된다.

-.then() 콜백 메서드에서 비동기 작업의 결과를 처리한다.

-promise는 반드신 해결되거나 err가 나타야한다.

1. positive가 출력될때: 첫번째 if문을 타고 resolve('positive')를 호출하면 .then()의 첫번재 파라메터의 콜백함수가 호출되고, resolve에서 리턴한 변수가 온다.

2.negative를 출력할때. 에러 처리 두가지 방법가능: 

3. Expromise('a')를 할 경우 else에 어느 것도 호출하지 않아서 아무것도 출력되지 않는다.

 

 

이전 콜백 지옥을 1초후마다 순차적으로 a,b,c를 축혁하는 코드를 promise로 하면

 

- 1초후에 A를 리턴하는 setTimeout 비동기 작업을 promise로 감싼다. new Promise는 선언과 동시에 실행된다.

비동기 작업이 실행되고 1초후에 A가 resolve된다.  

new Promise(resolve => {

  setTimeout(() => {

    resolve('A');

  }, 1000);

})

 

-A가 resolve되면 .then으로 결과를 받는다. A를 출력한후에 다시 1초후에 b를 출력하는 비동기 작업을 new Promise로 감싼 다음 return 한다.

 Promise에서는 .then()에서  return 함녀 다시 .then()에서 받을 수 있다. 

 

-a,b,c를 1초후에 비동기 작업을 순차적으로 처리하는게 아니라 한꺼번에 병렬로 처리하려면

1,2,4초가 걸린다면 4초가 끝나고 .then이 호출된다.

'자바스크립트' 카테고리의 다른 글

js 연산-반복문  (0) 2020.05.26
js 데이터 타입(es 6)  (0) 2020.05.25
배열 총정리  (0) 2020.05.23
async/await  (0) 2020.04.14
콜백함수  (0) 2020.04.14