forEach vs Promise.all - boostcampwm-2021/WEB25-JustUs GitHub Wiki

  • ๋‘˜๋‹ค ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

  • forEach(๋…ผ๋ธ”๋กœํ‚น)

    • ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ๋Œ๋ฉด์„œ callback์„ ์‹คํ–‰ํ•  ๋ฟ, ํ•œ callback์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.
    • ์ˆœ์ฐจ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด for, for...of๋กœ ๋ณ€๊ฒฝ(๋ธ”๋กœํ‚น)
  • Promise.all

    • ๋ฐฐ์—ด์„ ๋Œ๋ฉด์„œ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค.

    • ์ฆ‰, ๋ชจ๋“  promise๋“ค์ด resolve๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ๋ชจ๋‘ resolve๋˜๋ฉด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— ๋‹ด๋Š”๋‹ค.

    • ex) A โ†’ 1์ดˆ, B โ†’ 1.1์ดˆ, C โ†’ 1.2์ดˆ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด ๋ฐฐ์—ด์— ์žˆ๊ณ  promise.all๋กœ ๋Œ๋ฆฐ๋‹ค๋ฉด

      1.2์ดˆ๋งŒ์— ์™„๋ฃŒ๋˜๊ณ  A,B,C ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

  • ์ตœ์ข…์ ์œผ๋กœ forEach๋Š” ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๊ณ  Promise.all์€ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•œ๋‹ค.

  • ๊ทผ๋ฐ ์ฐจ์ด์ ์ด ์ด๊ฒƒ๋ฟ??

    • ใ„ดใ„ด
    • promise.all์€ ๊ทธ ๋ฐ‘์— ์žˆ๋Š” ์ฝ”๋“œ๋“ค๋„ promise.all์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
    • ํ•˜์ง€๋งŒ forEach๋Š” ์ฝœ๋ฐฑ์„ ํ˜ธ์ถœํ•ด๋ฒ„๋ฆฌ๋ฉด ํ• ์ผ์ด ๋๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ถœํ•œ ์ฝœ๋ฐฑ์ด ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์•„๋„ forEach๋Š” ํ• ์ผ์ด ๋๋‚œ ๊ฒƒ
      • ๊ทธ๋ž˜์„œ forEach ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๊ธฐ ์ „์— ๊ทธ ๋ฐ‘์— ์žˆ๋Š” ์ฝ”๋“œ๋“ค์ด ์‹คํ–‰๋˜๋ฒ„๋ฆฐ๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์‹คํ–‰ ํ›„(์ˆœ์ฐจ๋“ , ๋ณ‘๋ ฌ์ด๋“ ) ๊ทธ ๊ฒฐ๊ณผ๊ฐ€์ง€๊ณ  ๋’ค์— ํ• ์ผ์ด ์žˆ๋‹ค๋ฉด Promise.all์„ ์‚ฌ์šฉํ•  ๊ฒƒ

  • ๊ทธ๋ฆฌ๊ณ  ์–ด์ง€๊ฐ„ํ•˜๋ฉด ์„ฑ๋Šฅ์ƒ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌํ•˜์ž!!