์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ๋ฉํฐ ์์ ์ ํ๊ธฐ ์ํด ๋น๋๊ธฐ ์ฒ๋ฆฌ ๊ธฐ๋ฐ ๋ฐฉ์์ด ์์ฃผ ์ฐ์ธ๋ค.
๋น๋๊ธฐ ์ฒ๋ฆฌ๋ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋์๋๋ฏ๋ก ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ธ์ ๋ฐํ๋๋์ง ์ ์ ์๋ค
๊ทธ๋ ๊ธฐ์ ์๋ฃ๋๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ์ฝ๋ฐฑ ํจ์๋ ํ๋ก๋ฏธ์ค ๊ฐ์ฒด์ด๋ค.
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();
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 ํค์๋๋ 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();
๊ฐ๋ ์ฑ์ ๋์ผ ์๊ฐ ์๋ค.