async/await 문법은 ES8에 해당하는 문법으로, Promise를 더욱 쉽게 사용할 수 있게 해준다.
async/await 문법을 사용할 때에는 함수를 선언할 때 함수의 앞 부분에 async
키워드를 붙여준다.
그리고 Promsie 앞 부분에 await
을 넣어주면 해당 프로미스가 끝날 때 까지 기다렸다가 다음 작업을 수행할 수 있다.
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function process() {
console.log('안녕하세요!');
await sleep(1000); // 1초 쉬고
console.log('반갑습니다!');
}
process();
// >> 안녕하세요!
// >> 반갑습니다! (1초 뒤에)
위 코드에서는 sleep
이라는 함수를 만들어서 파라미터로 넣어준 시간만큼 기다리는 Promise를 만들고, 이를 process
함수에서 사용하였다. = 특정 ms 이후 resolve 함수가 호출되고, return 끝나게 된다.
함수에서 async
를 사용하면, 해당 함수는 결과값으로 Promise를 반환하게 된다.
async
함수에서 에러를 발생시킬 때에는 throw
를 사용하고, 에러를 잡아낼 때에는 try/catch
문을 사용한다.
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function makeError() {
await sleep(1000);
const error = new Error();
throw error;
}
async function process() {
try {
await makeError();
} catch (e) {
console.error(e);
}
}
process();