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

조회 169

profile picture

익명

2월 10일

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

구체적이고 정성스러운 질문에 Up 투표를 눌러주세요.

설명이 부족한 질문에 Down 투표를 눌러주세요. 커리어리가 질문자에게 수정을 요청할게요.

답변 1

BEST 답변

엄홍재님의 프로필 사진

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

익명

작성자

2월 22일

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

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

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

또는

이미 회원이신가요?

비슷한 질문 1

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

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

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

외 4개 답변 보러 가기

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

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