- for문 대신에 자바스크립트의 루프(forEach)를 사용해보려고 함 → 그러나 async/await를 사용할 때 문제 발생
무조건 끝까지 순회를 마침 → return, break 문을 사용하면 안 됨!! 또한 async, await를 기다려주지 않음!
1) for문 + await를 사용
2) Promise.all()을 사용
여러 Promise()들
- reject 발생에도 다 실행할 때 =>
Promise.allSettled,- 하나라도 reject 시 멈출 때 (모든 Promise 가 resolve 됐을 때를 보장하려면)=>
Promise.all- resolve / reject 여부 상관없이 가장 먼저 수행된 결과를 받아올 때 =>
Promise.race
작성한 코드
const promises = trainingList.map(async (item, i) => {
if (item.training_location_id) {
const trainingLocationName = await TrainingLocationsRepository.findById(item.training_location_id);
item.trainingLocationName = trainingLocationName.data.dataValues.name;
}
// user id로 등록자명 가져오기
if (item.user_id) {
const registerName = await UserRepository.findById(item.user_id);
trainingList[i].registerName = registerName.data.dataValues.name;
}
// 팀명 가져오기
if (item.training_team_id) {
const trainingTeamName = await TeamRepository.findById(item.training_team_id);
trainingList[i].trainingTeamName = trainingTeamName.data.dataValues.name;
}
});
await Promise.all(promises);
https://constructionsite.tistory.com/43
https://velog.io/@minsangk/2019-09-06-0209-%EC%9E%91%EC%84%B1%EB%90%A8-eik06xy8mm