반복문에서 비동기처리

박햄찌·2023년 8월 1일
0

자바스크립트

목록 보기
5/18

반복문에서 비동기처리

const getMovies = movieName => {
	return new Promise((resolve)=>{
    	fetch(`https://www.omdbapi.com/?apikey=7035c60c&s=${movieName}`)
        .then(res => res.json())
        .then(res => resolve(res));
    })
}

const titles = ['frozen','avengers','avatar'];
titles.forEach(async title => {
	const movies = await getMovies(title)
    console.log(title, movies);
})
  • forEach 라는 메서드 내부에서는 각각의 getMovies 라는 함수의 동작을 기다렸다가 다음 callback 으로 넘어가는것은 불가능하다.
    그러하여 titles 에 들어가있는 내용 순서대로 출력이 안될수도 있다.
  • 그래서 반복을 매번 기다려가면서 수행을 하려면 forEach를 쓰면 안되고 for 반복문을 사용해야한다.
const wrap = async () => {
	for(title of titles){
    	await getMovies(title);
        console.log(title, movies);
    }
}
wrap()
profile
개발자가 되고 싶어요

0개의 댓글