promise가 체인이된다보면 길어지기에
동기식으로 작성하는것처럼 보여주는 장점이 있다.
clear style of using promise
async
async function fetchUser() {
// do network request in 10 secs....
return 'ellie';
}
const user = fetchUser();
user.then(console.log);
console.log(user);
await
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function getApple() {
await delay(2000);
throw 'error';
return '사과';
}
async function getBanana() {
await delay(1000);
return '바나나';
}
async function pickFruits() {
const applePromise = getApple();
const bananaPromise = getBanana();
const apple = await applePromise;
const banana = await bananaPromise;
return `${apple} + ${banana}`;
}
pickFruits().then(console.log);
useful Promise APIs
function pickAllFruits() {
return Promise.all([getApple(), getBanana()])
.then(fruits => fruits.join('+'));
}
pickAllFruits().then(console.log);
function pickOnlyOne() {
return Promise.race([getApple(), getBanana()]);
}
pickOnlyOne().then(console.log);