개발자
배열에 원하는 데이터를 순서대로 가져온 후 배열에 넣고 싶은데 배열에 push가 되지 않아요.. console.log(info)는 데이터가 잘 나오는데 userInfo는 빈 배열 입니다. 아래 코드 첨부합니다.
답변 1
인기 답변
forEach() expects a synchronous function — it does not wait for promises. Make sure you are aware of the implications while using promises (or async functions) as forEach callbacks. - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach MDN 문서에 보면 forEach는 promise를 기다리지 않는다고 나옵니다. 그래서 API요청을 하는동안 이미 console.log(userProfiles)가 먼저 동작해서 []가 나옵니다. forEach안에서 console.log(info)를 실행해보면 [] 이후에 나오는 것을 확인할 수 있습니다. 해결하기 위해서는 이 링크를 참고해 보세요! https://constructionsite.tistory.com/43
익명
작성자
2023년 02월 22일
감사합니다 홍재님 많은 도움 되었습니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
비슷한 질문 1
Q. 자바스크립트 forEach 와 async await 을 같이 사용하면 안되는건가요?
최근에 받은 코드 리뷰에서 forEach 와 async await 을 같이 사용할 경우 문제가 발생할 수 있다는 피드벡을 받았습니다. 코드를 돌려 보았을 때는 크게 문제 없어보이는데 어떤 문제가 있는지 알려주실수 있나요 ? 만약 다음 코드에서 forEach 를 사용하면 안된다면 어떤 문법을 사용해야 하는지도 알려주세요. 사용 가능한 for 문이 너무 많아서 혼란스러워요 ㅠㅠ
forEach는 비동기 작업을 지원하지 않고, 프로미스가 resolve 될 때까지 기다리지 않고 다음 iteration으로 넘어가기 때문에 async/await와 같이 사용할 수 없습니다.
외 6개 답변 보러 가기
지금 가입하면 모든 질문의 답변을 볼 수 있어요!