Open utterances-bot opened 1 year ago
안녕하세요 :) 좋은 글 감사합니다.
본문에 적어주신 "즉, for, forEach에서는 모든 비동기 작업이 끝나는 것을 대기하지 않습니다." 문구에서 질문이 있어서 댓글을 남기게 되었습니다.
제가 for 문으로 비동기 작업을 async, await 형태로 테스트를 진행한 결과, 모든 비동기 작업이 끝날때까지 대기하는 것으로 확인이 되었습니다.
테스트한 코드는 다음과 같습니다.
const resArray = [];
console.log("시작 !!");
for (let i = 0; i < 5; i++) {
const res = await createPromise(i);
resArray.push(res);
}
console.dir(resArray);
console.log("종료 !!");
코드 실행 시 출력되는 log 는 다음과 같습니다.
시작 !!
Promise : 0
Promise : 1
Promise : 2
Promise : 3
Promise : 4
[ 0, 1, 2, 3, 4 ]
종료 !!
혹시, 제가 잘못이해하고 있거나 틀린 부분이 있다면 가르쳐주십시오 :) 감사합니다
@suntae89 안녕하세요. 제가 봐도 글의 내용에 약간 오류가 있는 것 같습니다. https://tecoble.techcourse.co.kr/post/2020-09-01-loop-async/ 이 블로그에 잘 나와있는데 요약하자면,
forEach
는 완전 비동기로 동작한다.for-loop
(일반적인 for문)는 각각의 요청에 모두 await
한다.map
을 통해 Promise
를 반환하자.@suntae89 @redonearth 좋은 지적 감사합니다~ 다시 알아보고 수정하도록할께요!
JavaScript - async/await를 for loop에서 사용하기 | 기억보다 기록을
JavaScript - async/await를 for loop에서 사용하기, promise, promise.all, for of, for in, for await of
https://kyounghwan01.github.io/blog/JS/JSbasic/for-await-of/