// sleep이란 함수를 만들어서 파라미터로 넣어준 시간 만큼 기다리는 Promise 생성
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
// process 함수에서 사용 Promise 반환
async function process() {
console.log('hi');
await sleep(1000);
console.log('nice to meet you');
}
process().then( () => {
console.log('finish!')
})
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(error) {
console.error(error);
}
}
process();
예외처리
사실 await을 써야할 의무는 없다. 단지 쓰지 않는다면 resolved값이 아니라 promise 객체를 가리킬 것이다.
비동기 함수가 직접 await해주지 않는다 본인이 직접 await 해야함! 하지않는다면 예상한 값 대신 promise 객체를 받게 될거다.
코드 상위 레벨에서 try/catch로 묶어줘야 한다. 동기/비동기 구분 없이 일관되게 예외처리가 가능하다.