async-await, try-catch
π‘ μ€λμ async-await, κ·Έλ¦¬κ³ ν¨κ» μ°μ΄λ try-catchμ λν΄μ μ 리ν΄λ³΄κ² μ΅λλ€.
async-await
async-await
λ μ½λ μ€νμ μμλ₯Ό μ ν΄μ£Όλ μν μ ν©λλ€.
ν¨μμ μ€ν μμλ₯Ό λ±! κ³ μ ν΄μ£ΌκΈ° μν΄μλΌκ³ μκ°νλ©΄ μ¬μΈ κ±°μμ :)
μ₯μ μ, κΈ°μ‘΄μ callback function
, Promise
μ κ°μ λΉλκΈ° μ²λ¦¬ λ°©μμ λ¨μ μ 보μνκ³ κ°λ°μκ° μ½κΈ° μ’μ μ½λλ₯Ό μμ±νλλ‘ λμμ€λλ€.
async function logName() {
var user = await fetchUser('domain.com/users/1');
// awaitλ‘ μμλ₯Ό μ ν΄μ€ κ΅¬λ¬Έμ΄ μλ£λμ΄μΌ μ€νλ©λλ€.
if (user.id === 1) console.log(user.name);
}
μ μ¬μ©νλμ?
λ€νΈμν¬λ νμΌμμ€ν μ μ κ·Όνλ κ²κ³Ό κ°μ λ¬΄κ±°μ΄ μμ μ νλ κ²½μ° μ΄λ€ μμ λΆν° μ€ννλμ§ μ°λ¦° μμκ° μμ΅λλ€. μ΄λ Javascriptμ λΉλκΈ°λΌλ νΉμ§ λλ¬Έμ λλ€.
- μΈλΆ API μμ
- μ±μ κ²½μ°, μμΉ μ 보 κΆνκ³Ό κ°μ ν΄λν° μ체μ κΈ°λ₯
μ 리ν΄μβ ν¨μμ μ€ν μμλ₯Ό κΌ μ§μΌμΌ νλ λΆλΆμμ μ¦ ν¨μμ μ€ν μμλ₯Ό κ³ μ νκΈ° μν΄μ μ¬μ©νλ κ²μ΄ async-awaitμ λλ€. λΉλκΈ° μ²λ¦¬ λ°©μμΈ κ²μ λκΈ°μ²λ¦¬λ₯Ό ν΄μ£ΌκΈ° μν΄μμ!
async-await κΈ°λ³Έ λ¬Έλ²
- μΌλ°μ μΌλ‘,
await
κ° μ μ©λλ λΉλκΈ° μ²λ¦¬ μ½λλPromise
λ₯Ό λ°νν©λλ€.async function ν¨μλͺ () { await λΉλκΈ° μ²λ¦¬ λ©μλ λͺ () }
async-await μ€μ© μμ
// μ¬μ©μ μ λ³΄κ° λ΄κΈ΄ Promise κ°μ²΄ λ°ν
function fetchUser() {
var url = 'https://url/users/1';
return fetch(url).then(function(response) {
return response.json();
})
}
// ν μΌ μ λ³΄κ° λ΄κΈ΄ Promise κ°μ²΄ λ°ν
function fetchTodo() {
var url = 'https://url/todos/1';
return fetch(url).then(function(response) {
return response.json();
})
}
// ν μΌ μ λͺ© μΆλ ₯
async function logTodoTitle() {
var user = await fetchUser();
if (user.id === 1) {
var todo = await fetchTodo();
console.log(todo.title);
}
}
try-catch
try-catch
λ μλ¬λ°©μ§ μ½λλ‘ μ£Όλ‘ APIλ₯Ό μμ²ν λ μμ£Ό μ¬μ©λ©λλ€.
μμ
μ ν λ API νΈμΆμ μ λλ‘ νμμ§λΌλ, μλ²μΈ‘
μμ νΉμ ν΄λν°κ³Ό κ°μ κΈ°κΈ° μ체
μμ λ± μΈμ μΌλ‘ μ€λ₯κ° λ°μν μκ° μλλ°, μ΄λ° μν©λ€μ μ²λ¦¬νκΈ° μν μ½λμ
λλ€.
try{}
μμλ API μμ²μ μν μμ μ½λ μ μν©λλ€.catch{}
μμλ μλ¬κ° λ°μνμ λ μ€νν μ½λλ₯Ό μμ±ν©λλ€. (μ΄λ€ μλ¬κ° λ¬λμ§ νμΈν μ μκ³ μλ¬μ²λ¦¬, νμμ²λ¦¬λ₯Ό ν΄μ€ μ μμ΅λλ€.)
async function logTodoTitle() {
try {
var user = await fetchUser()
if (user.id === 1) {
var todo = await fetchTodo()
console.log(todo.title)
}
} catch (error) {
console.log(error)
}
}