ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ°
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΈ Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½Π°
Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ½ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ , ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΡΡΠ±ΠΈΡΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ ΠΏΡΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΊΠ°ΡΠΎ ΡΡΠΈΠ²ΠΎΠ²Π΅, Π²Π»ΠΎΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, Π³ΠΎΠ»ΡΠΌΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°, Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ ΠΈΠ·Ρ ΠΎΠ΄ Π·Π° Π³ΡΠ΅ΡΠΊΠ° ΠΈ Π΄Ρ. - ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° API
ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ»Π°ΡΠ° AsyncLocalStorage, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π·Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΠΈ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΡ. AsyncLocalStorage Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π΄Π°Π½Π½ΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ΅Π± Π·Π°ΡΠ²ΠΊΠ°, Π½Π°ΠΏΠΎΠΌΠ½ΡΠΉΠΊΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² Π½ΠΈΡΠΊΠ° Π½Π° Π΄ΡΡΠ³ΠΈ Π΅Π·ΠΈΡΠΈ. - ΠΡΠ΅ΠΌΠ°Ρ
Π½Π°ΡΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅
ΠΌΠΎΠ΄ΡΠ»ΠΈ ECMAScript 6 Π³. ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΈ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π· ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ ΠΈ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Π½Π΅. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ°ΠΌΠΎΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ESM ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΎΡΡΠ°Π²Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ. - V8 Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΄ΠΎ Π²Π΅ΡΡΠΈΡ
8.1 (1 ,2 ,3 ), ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ Π½ΠΎΠ²ΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π·Π° ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ "??" (Π²ΡΡΡΠ° Π΄Π΅ΡΠ½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄, Π°ΠΊΠΎ Π»Π΅Π²ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ Π΅ NULL ΠΈΠ»ΠΈ Π½Π΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½, ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ), ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ "?." Π·Π° Π΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠ»Π°ΡΠ° Π²Π΅ΡΠΈΠ³Π° ΠΎΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ»ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ βdb?.user?.name?.lengthβ Π±Π΅Π· ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ), ΠΌΠ΅ΡΠΎΠ΄ΡΡ Intl.DisplayName Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΈ Π΄Ρ. - ΠΠ΅ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° ΡΠ΅Π²ΠΈΠ·ΠΈΡ Π½Π° Streams API, Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΎΡΡΡΠ° Π½Π° Streams API ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΡΠ°ΡΡΠΈ Π½Π° Node.js. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° http.OutgoingMessage Π΅ Π±Π»ΠΈΠ·ΠΊΠΎ Π΄ΠΎ stream.Writable, Π° net.Socket Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° stream.Duplex. ΠΠΏΡΠΈΡΡΠ° autoDestroy Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° Π½Π° "true" ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° "_destroy" ΡΠ»Π΅Π΄ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° API
ΠΠ―Π₯ ΠΠ (Π‘ΠΈΡΡΠ΅ΠΌΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ WebAssembly ), ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΡΠΈ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° (POSIX API Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠΎΠΊΠ΅ΡΠΈ ΠΈ Π΄Ρ.). - ΠΠΎΠ²ΠΈΡΠ΅Π½ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ
ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ: macOS 10.13 (High Sierra), GCC 6,Windows ΠΏΠΎ-Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ 7/2008R2 .
ΠΠ΅ΠΊΠ° ΠΏΡΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Node.js ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡΠΎ Π·Π° ΡΡΡΠ²ΡΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. ΠΠ° Π΄Π° ΡΠ°Π·ΡΠΈΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π·Π° Node.js, Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ
ΠΠ° Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, Node.js ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π΅Π½ ΠΌΠΎΠ΄Π΅Π» Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π½Π΅Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π·Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅. ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈ Π²ΠΊΠ»ΡΡΠ²Π°Ρ epoll, kqueue, /dev/poll ΠΈ select. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈ
Π ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° ΡΠΈ Node.js Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° ΡΠ°ΠΌΠΊΠΈΡΠ΅
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru