728x90
async/await 문법은 Promise를 더욱 쉽게 사용할 수 있게 해준다.
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function process() {
console.log('안녕하세요!');
await sleep(1000); // 1초쉬고
console.log('반갑습니다!');
}
process();
함수를 사용할 때 앞부분에 async키워드를 붙여줌주고,
promise앞부분에 await를 붙여준다.
async를 사용하면, 해당 함수는 결과값으로 Promise를 반환하게 된다.
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function process() {
console.log('안녕하세요!');
await sleep(1000); // 1초쉬고
console.log('반갑습니다!');
}
process().then(() => {
console.log('작업이 끝났어요!');
});
위의 코드를 실행한 결과값이다.
1초가 쉬면서 Promise라고 나온다.
async 함수에서 에러를 발생 시킬 때에는 throw를 사용하고,
에러를 잡아낼 때에는 try/catch문을 사용한다.
이렇게, await 를 사용하여 잠깐 쉴 수 있는 타임이 있는데,
동시에 나오게 하고싶다면 promise.all을 사용하면된다.
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const getDog = async () => {
await sleep(1000);
return '멍멍이';
};
const getRabbit = async () => {
await sleep(500);
return '토끼';
};
const getTurtle = async () => {
await sleep(3000);
return '거북이';
};
async function process() {
const results = await Promise.all([getDog(), getRabbit(), getTurtle()]);
console.log(results);
}
process();
단, Promise.all 를 사용 할 때,
등록한 Promise 중 하나라도 실패하면, 모든게 실패 한 것으로 간주한다.
728x90