티스토리 뷰

// async & await
// promise를 사용하는데 있어 깔끔한 스타일

// 1. async
/*function fetchUser() {
    // 백엔드에서 요청이 10초정도 걸리는 
    
    return new Promise((resolve, reject) => {
        resolve('ellie');
        //reject(new Error());
    });
}*/

async function fetchUser() {
    return 'ellie'; 
}

const user = fetchUser();
user.then(console.log).catch(console.log);
//user.then().catch(console.log);
console.log(user);

// 2. await
function delay(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

// 동기적 코드처럼 보임
async function getApple() {
    await delay(1000);
    //throw 'error';
    return 'apple';
}

async function getBanana() {
    await delay(1000);
    return 'banana';
}

/*function getBanana() {
    return delay(3000)
    .then(() => 'banana');
}*/

// 콜백지옥 코드(promise가 너무 많음)
// function pickFruits() {
//     return getApple()
//     .then(apple1 => {
//         return getBanana()
//         .then(banana1 => `${apple1} + ${banana1}`);
//     });
// }

async function pickFruits() {
    const applePromise = getApple();
    const bananaPromise = getBanana();

    // try catch를 통해 에러처리 가능
    //try{
    
    // 함수내에 promise가 선언되어 있으면 함수를 호출할 떄 앞에 await을 써줘야 함
    const apple = await applePromise;
    const banana = await bananaPromise;
    //} catch(error) {

    //}
    return `${apple} + ${banana}`;
}

pickFruits().then(console.log);

// 3. useful Promise APIs
function pickAllFruits() {
    return Promise.all([getApple(), getBanana()])
    .then(fruits => fruits.join(' + '));
}

pickAllFruits().then(console.log);

function pickOnlyOne() {
	//race -> 빨리 도착하는 함수의 결과가 출력됨
    return Promise.race([getApple(), getBanana()]);
}

pickOnlyOne().then(console.log)

'javascript' 카테고리의 다른 글

[javascript] CKEditor null 체크하는 방법  (0) 2020.12.24
[javascript] Cannot read property 'search' of undefined에러  (0) 2020.12.24
[javascript] promise  (0) 2020.11.19
[javascript] callback function  (0) 2020.11.18
[javascript] json  (0) 2020.11.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함