Skip to content

Latest commit

ย 

History

History
72 lines (51 loc) ยท 1.84 KB

JavaScript-full-stack25.md

File metadata and controls

72 lines (51 loc) ยท 1.84 KB

{ํ’€์Šคํƒ} JavaScript 25๊ฐ• - ๋น„๋™๊ธฐ ๊ด€๋ จ ๊ฐœ๋…๊นŒ์ง€ ํ•œ๋ฒˆ์— ๐Ÿง

Thread vs. Process

  • JS, C, PHP ๋“ฑ์€ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ
    • JS๋Š” ๋น„๋™๊ธฐ non-block I/O
    • ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜์— ์Šค๋ ˆ๋“œ ํ•˜๋‚˜
    • ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ๋Š” ๋งค์šฐ ๋น ๋ฆ„ (ํ๋ฅผ ๋นจ๋ฆฌ ๋น„์›Œ์•ผ ํ•จ)
  • Java, C#์€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ
    • ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜์— ์Šค๋ ˆ๋“œ ์—ฌ๋Ÿฌ ๊ฐœ
    • ํ˜„์žฌ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์Šค๋ ˆ๋“œ => ์Šค๋ ˆ๋“œ ๋กœ์ปฌ
    • ๋ณ‘๋ ฌ๋กœ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ 3๋ฒˆ ๋ฐ˜๋ณต ์‹คํ–‰๊ณผ ๋น„์Šท

๋น„๋™๊ธฐ

  • ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๋‹ค Promise
    • Promise; ์†์—์„œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ
  • ๋น„๋™๊ธฐ๋Š” ๋‹ค I/O์—์„œ ์ผ์–ด๋‚จ
    • Input; write
    • Output; read
  • Stream๋„ ๋น„๋™๊ธฐ

์ฝœ๋ฐฑ ์ง€์˜ฅ

  • Callback Hell

task queue

  • ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ๋‚ด ์ฝœ๋ฐฑ ๋‹ด์•„๋‘ 

์ฝœ๋ฐฑ ์ง€์˜ฅ ๋ฒ—์–ด๋‚˜๋Š” ๋ฒ•

  • ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ํƒœ์Šคํฌ ํ ๊ด€๋ฆฌ
  • ์ฝœ๋ฐฑ ํ—ฌ ๋ฒ—์–ด๋‚˜๊ธฐ ์œ„ํ•ด Promise ์‚ฌ์šฉ

micro task queue

  • ํ”„๋กœ๋ฏธ์Šค๋Š” ๋งˆ์ดํฌ๋กœํƒœ์Šคํฌ ํ์— ๋‹ด์Œ
  • ๋งˆ์ดํฌ๋กœํƒœ์Šคํฌ ํ๊ฐ€ ํƒœ์Šคํฌ ํ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„ ๋†’์Œ

Promise

  • then ํ”„๋กœ๋ฏธ์Šค ํ›„์† ์ฒ˜๋ฆฌ ๋ฉ”์„œ๋“œ
  • reject
    • err๊ฐ€ ์žˆ์œผ๋ฉด reject(err)
    • catch๋ฅผ ๋ถ€๋ฆ„
  • resolve
    • ํ†ต๊ณผํ•˜๋ฉด resolve(ret)
    • then ๋ถ€๋ฆ„

Promise ๋ฉ”์„œ๋“œ

  • Promise.all([f1, f2, f3]).then(console.log)
    • 3๊ฐœ ๋‹ค ์‹คํ–‰ ๋๋‚˜์•ผ ํƒ (resolve ๋œ ๊ฒƒ๋งŒ)
    • ๋™์‹œ์— ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰
  • Promise.race()
    • ๋นจ๋ฆฌ ๋๋‚œ ๋†ˆ ํƒ
  • Promise.allSettled()
    • resolve, reject ์ƒ๊ด€์—†์ด ๋‹ค ์คŒ

[Note]

  • PHP๊ฐ€ ๋…ธ๋“œ๋ณด๋‹ค ๋” ๋น ๋ฆ„ (PHP๋Š” C๊ธฐ๋ฐ˜)
  • ์ตœ๊ทผ์—๋Š” ๋‹ค async/await ์‚ฌ์šฉํ•จ
  • graphQL ์ž˜๋ชปํ•˜๋ฉด ์„œ๋ฒ„ ๋ถ€๋‹ด ํผ
    • 1๋ฒˆ ์ฝ์„ ๊ฒƒ์„ ๊ณ„์† ๋ฐ˜๋ณตํ•ด์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฝ์–ด์„œ ๋ถ€๋‹ด ๋งŽ์•„์ง€๋ฉด ์„œ๋ฒ„ ์ฃฝ์„ ์ˆ˜ ์žˆ์Œ

Reference