[typescript] Promise와 Async/Await 구문
[TypeScript] 비동기 통신 Promise
- TypeScript 에서의 비동기 처리는 기본적으로 ES6의 Promise로 처리한다.
- Promise Pattern은 IE11/오페라 미니 외 브라우저에서는 지원하지 않는 단점이 있다.
- 컴파일 시에 ES+프로미스 조합으로 컴파일 하면 모든 브라우저에서 동작이 가능
tsc promise.ts --lib ES2015.Promise,dom,es5
Promise의 세가지 상태
- 대기(pending) 상태 : Promise가 실행되고 값이 결정되지 않는 상태.
- 충족(fulfilled) 상태 : 대기 상태가 끝난 뒤 값이 결정된 상태이며, resolve 함수를 통해 값을 전달한다.
- 거부(rejected) 상태 : Promise가 제대로 처리되지 않고 거부된 상태로 catch Method로 반환하여 예외처리를 할 수 있다.
Promise 기본 선언 방법
const promise = new Promise((resolve, reject) => {
resolve(1);
}).then(res => {
console.log(res);
return 2;
}).then(res => {
console.log(res);
throw "Exception";
}).catch((err) => {
console.log(err);
});
- then ( ) 메서드는 Promise가 정상적으로 resolve method를 실행하면 처리하는 구간이며, catch 메서드는 reject method를 실행하면 처리되는 구간이다.
- then 메서드에서 발생한 예외 처리를 하기 위해서는 catch 메서드를 꼭 마지막에 선언해야 한다.
Promise 객체 생성하기
const 변수명: **Promise<자료형>** = **new Promise<자료형>**
으로 객체를 생성한다.
- 무명변수로 생성방법
new Promise<T>((
resolve: (successValue: T) => void,
reject: (any) => void) => { })