π‘ νλ‘λ―Έμ€μ
thenλ©μλλ₯Ό 체μ΄λ νμμΌλ‘ νΈμΆνλ κ² λ³΄λ€ κ°λ μ±μ λμΌ μ μλ€.
async function getCode() {
    return βMikeβ
} 
async ν€μλλ₯Ό λΆμ΄λ©΄ νμ νλ‘λ―Έμ€λ₯Ό λ°ννλ€.async function getName() {
    return βMikeβ;
}
console.log(getName());  // promise { <pending> }
then λ©μλλ₯Ό μ¬μ©ν  μ μλ€.async function getName(name) {
    return new Promise ((resolve, reject) => {
         setTimeout(() => {
              resolve(name);
         }, 2000);
    })
}
getName(βMikeβ).then((name) => {
    console.log(name);  // 2μ΄ν - Mike
})
thenμ μ¬μ©νμ¬ nameμ΄ returnλλ λͺ¨μ΅thenμ νλ‘λ―Έμ€ κ°μ²΄μ result κ°μ λ€μ ν¨μμ μΈμλ‘ μ¬μ© κ°λ₯ νλ€.function getName(name) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(name);
        }, 2000)
    })
}
async function showName() {
    const result = await getName(βMikeβ);
    console.log(result);
}
showName();
await ν€μλλ async κ° λΆμ ν¨μ λ΄λΆμμλ§ μ¬μ© κ°λ₯νλ€.awaitκ° λΆμΌλ©΄ ν΄λΉ ν¨μκ° μλ£λ λ κΉμ§ κΈ°λ€λ Έλ€κ° λ¦¬ν΄ κ°μ λ°ννλ€.thenμ ν΅ν νλ‘λ―Έμ€ μ²΄μ΄λ λ³΄λ€ κ°λ
μ±μ λμΈλ€.const f1 = () => {
    return new Promise((res, rej) => {
        setTimeout(() => {
            res(β1λ² μ£Όλ¬Έ μλ£β);
        }, 1000);
    });
};
const f2 = (message) => {
     console.log(message);
     return new Promise((res, rej) => {
          setTimeout(() => {
               res(β2λ² μ£Όλ¬Έ μλ£β);
          }, 3000);
     });
};
const f3 = (message) => {
    console.log(message)
    return new Promise((res, rej) => {
        setTimeout(() => {
            res(β3λ² μ£Όλ¬Έ μλ£β);
        }, 2000);
    });
};
console.log(βμμβ);
f1()
    .then((res) => f2(res))
    .then((res) => f3(res))
    .then((res) => console.log(res))
    .catch(console.log)
    .finally(() => {
        console.log(βλβ);
     })
res μνμμ resultμ ν λΉλλ κ°μ thenμ ν΅ν΄ λ€μ ν¨μμ μ λ¬νλ λ°©μμ΄λ€.async_await ꡬ문μΌλ‘ 리ν©ν λ§ ν΄λ³΄μasync function order() {
    const result1 = await f1()
    const result2 = await f2(result1);
    const result3 = await f3(result2);
    console.log(result3);
    console.log(βμ’
λ£β);
}
order();
order() κ° νΈμΆλλ©΄ result1μ f1()μ 리ν΄κ°μ 1μ΄ νμ ν λΉνλ€.await ν€μλλ₯Ό μ¬μ©νκΈ° λλ¬Έμ λ€μ ꡬ문μΌλ‘ λμ΄κ°μ§ μλλ€.result1 κ° (β1λ² μ£Όλ¬Έ μλ£β)μ f2() ν¨μμ λ겨주고 2μ΄ ν result2 λ³μμ 리ν΄κ°μ ν λΉνλ€await κ΅¬λ¬Έμ΄ λλλ©΄ result3λ‘ ν λΉλ κ°μ console.log()λ‘ μ°κ³  μ’
λ£κΉμ§ μ°κ³  μ’
λ£λλ€.async_await ꡬ문μμλ Promise.allμ μ¬μ© ν  μ μλ€.