- async와 await은 기존의 promise에서 좀 더 간편한 API를 제공하는 Syntactic sugar라고 할 수 있다.
- Syntactic sugar: 기존에 존재하는 것을 보완하여 좀 더 간편하고 편리하게 쓸 수 있는 것을 말한다. 예) Class, Async & Await
function fetchUser() {
return new Promise((resolve, reject) => {
resolve('promise!');
});
}
const user = fetchUser();
user.then(console.log);
console.log(user);
async function fetchUser2() {
return 'async!'
};
const user2 = fetchUser2();
user2.then(console.log);
console.log(user2);
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function getApple() {
await delay(2000);
return '🍎';
}
async function getBanana() {
await delay(1000);
return '🍌';
}
async function pickFruits() {
const apple = await getApple();
const banana = await getBanana();
return `${apple} + ${banana}`;
}
pickFruits2().then(console.log);
function pickFruits2() {
return getApple().then(apple => {
return getBanana().then(banana => `${apple} + ${banana}`);
});
}
pickFruits2().then(console.log);
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);