async & await
- clear style of using promise
1. async
// promise
function fetchUser() {
return new Promise((resolve, reject) => {
// do network request in 10 secs...
resolve('ellie');
});
}
const user fetchUser();
user.then(console.log);
console.log(user);
// async
async function fetchUser() {
// do network request in 10 secs...
return 'ellie';
}
const user fetchUser();
user.then(console.log);
console.log(user);
2. await
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function getApple() {
await delay(3000);
return 'apple';
}
async function getBanana() {
await delay(3000);
return 'banana';
}
async function pickFruits() {
const apple = await getApple();
const banana = await getBanana();
return `${apple} + ${banana};
}
pickFruits().then(console.log);
3. await 병렬 처리
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function getApple() {
await delay(3000);
return 'apple';
}
async function getBanana() {
await delay(3000);
return 'banana';
}
async function pickFruits() {
const applePromise = getApple();
const bananaPromise = getBanana();
const apple = await applePromise();
const banana = await bananaPromise();
return `${apple} + ${banana};
} // 먼저 promise를 만들어 준 다음 await로 실행하면 병렬로 처리할 수 있음
pickFruits().then(console.log);
4. useful Promise APIs
//Promise.all - 배열에 전달된 모든 promise를 동시에 병렬로 수행
function pickAllFruits() {
return Promise.all([getApple(), getBanana()]).then(fruits =>
fruits.join(' + ')
);
}
pickAllFruits().then console.log);
// Promise.race - 배열에 전달된 promise 중 가장 먼저 값을 return 하는 것만 출력
function pickOnlyOne() {
return Promise.race([getApple(), getBanana()]);
}
pickOnlyOne().then(console.log);
'JavaScript' 카테고리의 다른 글
[구름톤 챌린지] 1주차_프로젝트 매니징 (0) | 2023.08.17 |
---|---|
event, event handler (0) | 2023.06.29 |
promise (0) | 2023.06.23 |
callback (0) | 2023.06.22 |
function (0) | 2023.06.13 |