์์ ์ Deepkit ๋ค๋ฃฌ ๊ฑฐ ํ์ ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ์ ๋ฒค์น๋งํฌ์ ๋ฃ๊ฒ ๋ค๊ณ ์จ๋ฆ ์ค์ด๋ค.
์ค๋ ์ฝ์ ๋งํฌ
Deno๊ฐ run์ ๊ธฐ๋ณธ๊ฐ์ ํ์ ์ฒดํน์ ์ ํ๋ ์ชฝ์ผ๋ก ๋ณ๊ฒฝํ๋ฉด์, SWC์ ํ์ ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ ๊ฐ ์ฐจ์ด๋ก ์ธํด ๊ฒฐ๊ณผ ์ฐจ์ด๊ฐ ์๊น
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