Javascript

Promise.all 쓸때 에러

킹king 2023. 1. 10. 14:13
반응형

 

TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))

= forEach를 쓰지않았나 확인

 

여러 데이터를 db에 저장해야하는데, 모두 다 완료되면 테이블을 한번만 reload해야하는 상황이 옴. 그래서 Promise.all을 활용하여 모든 요청이 완료된 이후 뭔가 동작하도록 했는데 자꾸 위와 같은 에러가 떠서 찾아보니 forEach문은 원래 return undefined을 하기때문에 다르게 쓰라고해서 map이나 다른걸로 사용했더니 에러가 사라짐.

 

Promise.all(
  dataArray.map(async (data) => {
    return axios
      .post("/api/user/add", {
        userId: data.userId
      })
  })
).then(() => {
  // 최종적으로 완료했을때 오는곳
});


// 아님 객체에 담으려면 이렇게
let promises = await dataArray.map((data) => axios.post("어쩌고"));

await Promise.all(promises).then(() => {
  // 최종적으로 완료했을때 오는곳
})

 

---

 

https://stackoverflow.com/questions/59397944/why-the-error-for-promise-all-typeerror-cannot-read-property-symbolsymbol-i