Basix Knowledge Base

Powered by ๐ŸŒฑRoam Garden

June 18th, 2022

์˜ˆ์ „์— Deepkit ๋‹ค๋ฃฌ ๊ฑฐ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ ํƒ€์ž… ๋ฒค์น˜๋งˆํฌ์— ๋„ฃ๊ฒ ๋‹ค๊ณ  ์”จ๋ฆ„ ์ค‘์ด๋‹ค.

์˜ค๋Š˜ ์ฝ์€ ๋งํฌ

Deno๊ฐ€ run์˜ ๊ธฐ๋ณธ๊ฐ’์„ ํƒ€์ž…์ฒดํ‚น์„ ์•ˆ ํ•˜๋Š” ์ชฝ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ, SWC์™€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ๋Ÿฌ ๊ฐ„ ์ฐจ์ด๋กœ ์ธํ•ด ๊ฒฐ๊ณผ ์ฐจ์ด๊ฐ€ ์ƒ๊น€

Lerna์™€ Bazel ์‚ฌ์ด์˜ ๋ฏธ๋“ค ๊ทธ๋ผ์šด๋“œ ๊ฐ™์€ ๋А๋‚Œ

V8 ๋ธ”๋กœ๊ทธ๊ฐ€ ๋งค ๋ฆด๋ฆฌ์ฆˆ๋งˆ๋‹ค ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ๋ฅผ ๋ธ”๋กœ๊ทธ์— ์“ฐ๋˜ ๊ฑธ ์ค‘๋‹จํ•จ

await new Promise(() => console.log('foo'))
console.log('bar')

Node.js์—์„œ ESM ๋ชจ๋“œ๋กœ ์œ„ ์ฝ”๋“œ๋ฅผ ๋Œ๋ฆฌ๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

์œ„ ์ฝ”๋“œ์— ๋“ค์–ด๊ฐ„ Promise๋Š” resolve๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— foo๊ฐ€ ์ถœ๋ ฅ๋œ ๋’ค ๋ป—๋Š”๋‹ค๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ์‹ค์ œ ๋™์ž‘์€ foo๋ฅผ ์ถœ๋ ฅํ•œ ๋’ค์— ์ข…๋ฃŒ๋œ๋‹ค

๊ทธ ์ด์œ ๋Š” ์ฝ”๋“œ๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฐ”๊ฟ”์„œ ๋ณด๋ฉด ์ข€ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค

new Promise(() => console.log('foo')).then(() => console.log('bar'))

resolve๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋‹ค์Œ ์ฝ”๋“œ์ธ bar๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ , ๊ทธ๋Ÿฌ๋ฉด top-level await์ด ์‚ฌ์šฉ๋œ ์ƒํ™ฉ์—์„œ๋Š” ๊ทธ ์ดํ›„ ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ then์œผ๋กœ ๋ฌถ์ธ ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ํšจ๊ณผ๋ฅผ ๋‚ด๊ธฐ์— ๋‹น์žฅ ํ•  ์ผ์ด ์—†์œผ๋ฏ€๋กœ ์ข…๋ฃŒ

ํŠธ์œ„ํ„ฐ ํƒ€๋ž˜๋กœ๋„ ๋‹ค๋ค˜๋‹ค https://twitter.com/Basix1120/status/1537849834933063680