function User(){
return new Promise((resolve,reject) => {
return "kim"; // resolve를 사용하지 않음
})
}
const user = User();
console.log(user); // Promise {<pending>} , resolve를 사용하지 않았기 때문이다
function User(){
return new Promise((resolve,reject) => {
resolve("kim"); // resolve를 사용
})
}
const user = User();
console.log(user); // Promise{<fulfilled> : "kim"}
async-await은 ES8에서 추가된 문법으로 Promise 사용한 비동기 처리를 더욱 손쉽게 하기 위해 나왔다.
(Promise를 간단하게 쓸 수 있는 syntactic sugar)
비동기 처리 방식을 동기 처리처럼 가능하게 해준다. (실제 동기 방식처럼 진행되는게 아니라 코드를 작성하는 방식이 동기방식처럼 보인다는 것이다.)
try/catch
구문을 사용하여 오류 처리가 간단해지고, 오류가 발생한 경우에도 예외를 쉽게 처리할 수 있다.await
키워드를 사용하면 코드 실행이 해당 비동기 작업이 완료될 때까지 블로킹되므로, 직렬화된 작업 흐름을 유지하면서 비동기 코드를 동기식으로 작성할 수 있다.async 키워드는 function 앞에 사용한다. function 앞에 async를 붙이면 해당 함수는 항상 프로미스를 반환한다. (프로미스가 아닌 값을 반환하더라도 이행 상태의 프로미스(resolved promise)로 값을 감싸 이행된 프로미스가 반환되도록 한다.)