함수 앞에 async 라는 키워드를 붙여주면 자동으로 함수 내의 코드 블럭이 promise로 변경된다.
즉, resolve를 하지 않고 그냥 return 하더라도 Promise 객체를 리턴하게 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
functionfetchUser() { returnnewPromise((resolve, reject) => { // do network request in 10 sec... resolve('kwon'); }); } // 위의 Promise를 async를 사용하여 변경하면 아래와 같다. asyncfunctionfetchUser() { // do network request in 10 sec... return'kwon'; }
const user = fetchUser(); user.then(console.log);
await
async 키워드가 붙은 함수 내에서만 사용이 가능하다.
비동기 처리를 수행하는 코드 앞에 await을 붙여 사용하면 된다.
이 때, 비동기 처리 메소드가 꼭 프로미스 객체를 반환해야 await이 의도한 대로 동작한다.
functiongetApple() { return delay(2000) .then(() =>'apple'); } // 위의 getApple을 await을 사용하면 ****아래와 같이 사용할 수 있다. asyncfunctiongetApple() { await delay(2000); return'apple'; }
이제 다음의 코드를 보자. promise를 사용하여 getApple 과 getBanana 를 모두 가져오는 함수이다.