study 03. Async & Await
async function 함수명() {
await 비동기_처리_메서드명();
}
// 프로미스를 사용하면 반드시 resolve와 reject를 호출해야 함
function fetchUser() {
return new Promise((resolve, reject) => {
// return `hi`; // 프로미스 pending(대기) 상태
resolve(`hi`); // 프로미스 fulfilled(이행) 상태
// reject(new Error(`error`)); // 프로미스 rejected 상태
});
}
const user = fetchUser();
// console.log(user);
user.then(user => console.log(user));
// arrow function
const fetchUser = async () => {
return `hi`;
};
// fetchUser().then(data => console.log(data)); // 함수로 바로 호출
const user = fetchUser(); // 변수에 할당해서 호출
user.then(data => console.log(data));
console.log(user);
function delay(ms) {
return new Promise (resolve => setTimeout(resolve, ms));
}
function getApple() {
return delay(1000)
.then(() => `apple`);
}
function getBanana() {
return delay(1000)
.then(() => `banana`);
}
function pickFruits() {
return getApple()
.then(apple => {
return getBanana().then(banana => `${apple} + ${banana}`);
});
}
pickFruits().then(result => console.log(result));
function delay(ms) {
return new Promise (resolve => setTimeout(resolve, ms));
}
async function getApple() {
await delay(1000);
// throw new Error(`error: apple`); // error 발생
return `apple`;
}
async function getBanana() {
await delay(1000);
// throw new Error(`error: banana`);
return `banana`;
}
async function pickFruits() {
let apple = null;
try {
apple = await getApple();
} catch(error) {
console.log(error);
}
let banana = null;
try {
banana = await getBanana();
} catch(error) {
console.log(error);
}
return `${apple} + ${banana}`;
}
pickFruits().then(result => console.log(result));