개발자

[javascript]array에 push가 안됩니다.

2023년 02월 10일조회 338

배열에 원하는 데이터를 순서대로 가져온 후 배열에 넣고 싶은데 배열에 push가 되지 않아요.. console.log(info)는 데이터가 잘 나오는데 userInfo는 빈 배열 입니다. 아래 코드 첨부합니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 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

profile picture

익명

작성자

2023년 02월 22일

감사합니다 홍재님 많은 도움 되었습니다!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

비슷한 질문 1

Q. 자바스크립트 forEach 와 async await 을 같이 사용하면 안되는건가요?

최근에 받은 코드 리뷰에서 forEach 와 async await 을 같이 사용할 경우 문제가 발생할 수 있다는 피드벡을 받았습니다. 코드를 돌려 보았을 때는 크게 문제 없어보이는데 어떤 문제가 있는지 알려주실수 있나요 ? 만약 다음 코드에서 forEach 를 사용하면 안된다면 어떤 문법을 사용해야 하는지도 알려주세요. 사용 가능한 for 문이 너무 많아서 혼란스러워요 ㅠㅠ

forEach는 비동기 작업을 지원하지 않고, 프로미스가 resolve 될 때까지 기다리지 않고 다음 iteration으로 넘어가기 때문에 async/await와 같이 사용할 수 없습니다.

외 6개 답변 보러 가기

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!