async/await

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹์ด ์ž์ฃผ ์“ฐ์ธ๋‹ค.

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋™์ž‘๋˜๋ฏ€๋กœ ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ์–ธ์ œ ๋ฐ˜ํ™˜๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค

๊ทธ๋ ‡๊ธฐ์— ์™„๋ฃŒ๋˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ž‘ ํ”„๋กœ๋ฏธ์Šค ๊ฐ์ฒด์ด๋‹ค.

async / await ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

function ํ‚ค์›Œ๋“œ ์•ž์— async ๋ฅผ ๋ถ™์—ฌ์ฃผ๊ณ  ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ถ€๋ถ„ ์•ž์— await ๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๋™๊ธฐ์ฒ˜๋Ÿผ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•ด์ฃผ๋Š” ๊ฒƒ์ธ๋ฐ, async/await๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๋ฏธ์Šค์˜ then/catch/finally ํ›„์† ์ฒ˜๋ฆฌ ๋ฉ”์„œ๋“œ์— ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ›„์† ์ฒ˜๋ฆฌํ•  ํ•„์š” ์—†์ด ๋งˆ์น˜ ๋™๊ธฐ์ฒ˜๋Ÿผ ํ”„๋กœ๋ฏธ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

const fetch = require('node-fetch');

async function fetchTodo() {
  const url = '<https://jsonplaceholder.typicode.com/todos/1>';

  const response = await fetch(url);
  const todo = await response.json();
  console.log(todo);
  // {userId: 1, id: 1, title: 'delectus aut autem', completed: false}
}

fetchTodo();

async ํ‚ค์›Œ๋“œ

await๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด async function ์ •์˜๊ฐ€ ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

async function func1() {
    const res = await fetch(url); 
    const data = await res.json(); 
}
func1();

const func2 = async () => {
    const res = await fetch(url); 
    const data = await res.json(); 
}
func2();

async function์—์„œ๋Š” ์–ด๋–ค ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋“  ๋ฌด์กฐ๊ฑด ํ”„๋กœ๋ฏธ์Šค ๊ฐ์ฒด๋กœ ๊ฐ์‹ธ์ ธ์„œ ๋ฐ˜ํ™˜๋œ๋‹ค.

await ํ‚ค์›Œ๋“œ

await ํ‚ค์›Œ๋“œ๋Š” promise.then() ๋ณด๋‹ค ์ข€ ๋” ์„ธ๋ จ๋˜๊ฒŒ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋ฌธ๋ฒ•์ด๋‹ค.

fetch(url)
    .then(res => res.json()) 
    .then(data => {
      console.log(data);
    })

await ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด

async function func() {
    const res = await fetch(url); 
    const data = await res.json(); 
    console.log(data);
}
func();

๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜๊ฐ€ ์žˆ๋‹ค.