비동기 작업을 순차적으로 하게되면 콜백 지옥이 되어 가독성이 떨어진다.
그래서 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 |