Kyounghwan01 / blog-comment

blog 코멘트 링크 레포
0 stars 0 forks source link

blog/JS/JSbasic/for-await-of/ #56

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

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/

suntae89 commented 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 ]
종료 !!

혹시, 제가 잘못이해하고 있거나 틀린 부분이 있다면 가르쳐주십시오 :) 감사합니다

redonearth commented 1 year ago

@suntae89 안녕하세요. 제가 봐도 글의 내용에 약간 오류가 있는 것 같습니다. https://tecoble.techcourse.co.kr/post/2020-09-01-loop-async/ 이 블로그에 잘 나와있는데 요약하자면,

  1. forEach는 완전 비동기로 동작한다.
  2. for-loop(일반적인 for문)는 각각의 요청에 모두 await 한다.
  3. 요청이 끝나는 순서가 상관없다면 map을 통해 Promise를 반환하자.
Kyounghwan01 commented 1 year ago

@suntae89 @redonearth 좋은 지적 감사합니다~ 다시 알아보고 수정하도록할께요!