async & await
JavaScriptμ λΉλκΈ° νλ‘κ·Έλλ°μ κ°νΈνκ² λ§λλ ν€μλμ
λλ€.
β’
β’
async
β’
await
async
async: "λΉλκΈ°" λλ "λΉλκΈ°μ"μ΄λΌλ μλ―Έλ‘ ν΄μλ©λλ€. μμ΄ λ¨μ΄ asynchronousμ μ€μλ§λ‘, λμμ μΌμ΄λμ§ μλ κ²μ μλ―Έν©λλ€.
await
await: "κΈ°λ€λ¦¬λ€" λλ "λκΈ°νλ€"λΌλ μλ―Έλ‘ ν΄μλ©λλ€. μμ΄ λμ¬ awaitμμ μ λν κ²μΌλ‘, μ΄λ€ μΌμ΄ μλ£λκΈ°λ₯Ό κΈ°λ€λ¦¬λ κ²μ μλ―Έν©λλ€.
async
ν¨μ μ μΈ μμ λΆμ΄λ ν€μλλ‘, ν¨μλ₯Ό λΉλκΈ° ν¨μλ‘ μ μν©λλ€.
async ν¨μ λ΄λΆμμ λ°νλ κ°μ μλμΌλ‘ Promise.resolve()λ‘ κ°μΈμ§λλ€. λ°λΌμ async λ‘ ν¨μλ₯Ό μ μνλ©΄, Promise λ‘ μ²λ¦¬ν μ μμ΅λλ€.
async μ¬μ©λ²
1.
Promise μ¬μ©
2.
await μ¬μ©
Promise μ¬μ©
async function example() {
return "Hello, async!";
}
example().then(console.log); // "Hello, async!"
JavaScript
볡μ¬
await μ¬μ©
async function fetchData() {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
return data;
}
JavaScript
볡μ¬
await
ν¨μ νΈμΆ μμ λΆμ΄λ ν€μλλ‘, λΉλκΈ° ν¨μμ λ°ν κ²°κ³Όλ₯Ό κΈ°λ€λ €μ λ°μμ΅λλ€.
β’
async ν¨μ λ΄λΆμμλ§ μ¬μ©ν μ μμΌλ©°, Promiseκ° ν΄κ²°λ λκΉμ§ κΈ°λ€λ¦½λλ€.
β¦
: await ν€μλλ Promiseκ° ν΄κ²°λλ©΄ κ·Έ κ°μ λ°ν
β¦
: Promiseκ° κ±°λΆλλ©΄ μλ¬ λ°μ
await μμμ½λ
async function getUserData(userId) {
try {
const response = await fetch(`/user/${userId}`);
if (!response.ok) {
throw new Error('Network response was not ok');
}
const data = await response.json();
return data;
} catch (error) {
console.error('There was a problem with the fetch operation:', error);
}
}
async function displayUserData(userId) {
const userData = await getUserData(userId);
console.log(userData);
}
displayUserData(1);
JavaScript
볡μ¬
async & await μ₯μ
β’
κ°λ
μ±: async/awaitλ₯Ό μ¬μ©νλ©΄ λΉλκΈ° μ½λλ₯Ό λ§μΉ λκΈ° μ½λμ²λΌ μμ±ν μ μμ΄ κ°λ
μ±μ΄ λμμ§λλ€.
β’
μλ¬ μ²λ¦¬: try...catch λΈλ‘μ μ¬μ©νμ¬ λΉλκΈ° μ½λμμλ λκΈ° μ½λμ λμΌν λ°©μμΌλ‘ μλ¬λ₯Ό μ²λ¦¬ν μ μμ΅λλ€.
β’
λλ²κΉ
: async/awaitλ₯Ό μ¬μ©νλ©΄ μ½λ°± μ§μ₯(callback hell)μ νΌν μ μμ΄ λλ²κΉ
μ΄ μ©μ΄ν©λλ€.