Front-end/JavaScript

JS 비동기 4편 - for await of

파리외 개발자 2023. 4. 12. 23:40

ES9에서 추가된 for await of는 비동기 처리 반복문이다.

const urls = [
  "https://jsonplaceholder.typicode.com/users/1",
  "https://jsonplaceholder.typicode.com/users/2",
  "https://jsonplaceholder.typicode.com/users/3",
  "https://jsonplaceholder.typicode.com/users/4",
];

//for await of
const getData = async () => {
  try {
    const [one, two, three, four] = await Promise.all(
      urls.map(async (url) => {
        const res = await fetch(url);
        return res.json();
      })
    );
    console.log("1", one);
    console.log("2", two);
    console.log("3", three);
    console.log("4", four);
  } catch (err) {
    console.log(err);
  }
};

getData();

기존에는 await을 지원하는 반복문이 없어 위와 같이 코드를 짰어야 했다.

const getDataLoop = async () => {
  const arrOfPromise = urls.map((url) => fetch(url));
  for await (let req of arrOfPromise) {
    const data = await req.json();
    console.log(data);
  }
};

getDataLoop();

일반적인 for문에 await을 작성하면 for문 안에서도 await을 사용할 수 있다.