ИзданиС Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π½Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° JavaScript Node.js 14.0

Π‘Π΅ ΡΡŠΡΡ‚ΠΎΡ Ρ€Π΅Π»ΠΈΠ· Node.js 14.0, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° изпълнСниС Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния Π½Π° JavaScript. Node.js 14.0 ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ към ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅Ρ‚Π΅ с Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ статус Ρ‰Π΅ бъдС ΠΏΡ€ΠΈΡΡŠΠ΄Π΅Π½ Π΅Π΄Π²Π° ΠΏΡ€Π΅Π· ΠΎΠΊΡ‚ΠΎΠΌΠ²Ρ€ΠΈ, слСд стабилизацията. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Node.js 14.0 Ρ‰Π΅ бъдС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΄ΠΎ Π°ΠΏΡ€ΠΈΠ» 2023 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ LTS-ΠΊΠ»ΠΎΠ½ Node.js 12.0 Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄ΠΎ Π°ΠΏΡ€ΠΈΠ» 2022 Π³ΠΎΠ΄ΠΈΠ½Π°, Π° Π½Π° ΠΏΠΎ-ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ LTS-ΠΊΠ»ΠΎΠ½ 10.0 Π΄ΠΎ Π°ΠΏΡ€ΠΈΠ» 2021 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° мСТдинния ΠΊΠ»ΠΎΠ½ 13.x Ρ‰Π΅ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ ΠΏΡ€Π΅Π· юни Ρ‚Π°Π·ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π°.

Основни подобрСния:

  • Π‘Ρ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π½Π°ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ диагностики ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΈ, Π² ΠΊΠΎΠΈΡ‚ΠΎ сС отразяват ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, ΠΏΠΎΠ΄ΠΏΠΎΠΌΠ°Π³Π°Ρ‰ΠΈ диагностициранСто Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΊΠ°Ρ‚ΠΎ сривовС, ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π° производитСлността, ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚, висока натоварСност Π½Π° CPU, Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Ρ‚.Π½.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ СкспСримСнтална ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° API Async Local Storage с рСализация Π½Π° класа AsyncLocalStorage, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° създаванС Π½Π° асинхронно ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΊΠΎΠ»Π±Π΅ΠΊ-извиквания ΠΈ промиси. AsyncLocalStorage позволява ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡƒΠ΅Π±-запрос, напомняща Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π·Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ (Thread-Local Storage) Π² Π΄Ρ€ΡƒΠ³ΠΈ Π΅Π·ΠΈΡ†ΠΈ.
  • ΠŸΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΎ Π΅ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° СкспСримСнталната функция ΠΏΡ€ΠΈ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ECMAScript 6 Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈ ΠΈ Скспортирани Ρ‡Ρ€Π΅Π· ΠΈΠ·Ρ€Π°Π·ΠΈ import ΠΈ export. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ самата рСализация Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ ESM остава СкспСримСнтална.
  • ДвигатСлят V8 Π΅ ΠΎΠ±Π½ΠΎΠ²Π΅Π½ Π΄ΠΎ вСрсия 8.1 (1, 2, 3), Π² която са внСсСни Π½ΠΎΠ²ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° производитСлността ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ, ΠΊΠ°Ρ‚ΠΎ Π½ΠΎΠ²Π°Ρ‚Π° логичСска опСрация Π·Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ β€ž??β€œ (Π²ΡŠΡ€Ρ‰Π° дСсния ΠΎΠΏΠ΅Ρ€Π°Π½Π΄, Π°ΠΊΠΎ лСвият ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ° стойност NULL ΠΈΠ»ΠΈ undefined, ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ), ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ β€ž?.β€œ Π·Π° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° цСлия Π²Π΅Ρ€ΠΈΠ³Π° ΠΎΡ‚ свойства ΠΈΠ»ΠΈ извиквания (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€ždb?.user?.name?.lengthβ€œ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ), ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ Intl.DisplayName Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ наимСнования ΠΈ Ρ‚.Π½.
  • Π˜Π·Π²ΡŠΡ€ΡˆΠ΅Π½Π° Π΅ рСвизия Π½Π° API Streams, насочСна към подобряванС Π½Π° послСдоватСлността Π½Π° API интСрфСйситС Streams ΠΈ отстраняванС Π½Π° Ρ€Π°Π·Π»ΠΈΠΊΠΈΡ‚Π΅ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ части Π½Π° Node.js. НапримСр, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° http.OutgoingMessage Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΎ Π΄ΠΎ stream.Writable, Π° net.Socket Π΄ΠΎ stream.Duplex. ΠžΠΏΡ†ΠΈΡΡ‚Π° autoDestroy ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° Π½Π° β€žtrueβ€œ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° β€ž_destroyβ€œ слСд Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ СкспСримСнтална ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° API WASI (WebAssembly System Interface), прСдоставящ интСрфСйси Π·Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ взаимодСйствиС с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма (POSIX API Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, сокСти ΠΈ Ρ‚.Π½.).
  • ПовишСни изисквания към ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡ‚Π΅ вСрсии ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ: macOS 10.13 (High Sierra), GCC 6, Windows вСрсии Π½Π°Π΄ 7/2008R2.

ΠŸΡ€ΠΈΠΏΠΎΠΌΠ½ΡΠΌΠ΅, Ρ‡Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Node.js ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° ΡΡŠΡ€Π²ΡŠΡ€Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Web-прилоТСния, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° създаванС Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ клиСнтски ΠΈ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ. Π—Π° Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ Π½Π° функционалността Π½Π° прилоТСнията Π·Π° Node.js Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½Π° голяма колСкция ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π² която ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС открият ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° интСграция с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΡƒΠ΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²Π΅, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° WebSocket ΠΈ Ajax, ΠΊΠΎΠ½Π΅ΠΊΡ‚ΠΎΡ€ΠΈ към Π‘Π£Π‘Π” (MySQL, PostgreSQL, SQLite, MongoDB), ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ, CSS Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ ΠΈ систСми Π·Π° авторизация (OAuth), XML парсСри.

Π—Π° осигуряванС Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° голямо количСство ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ заявки, Node.js ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° асинхронСн ΠΌΠΎΠ΄Π΅Π» Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄, основан Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ Ρ€Π΅ΠΆΠΈΠΌ ΠΈ опрСдСлянС Π½Π° callback ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ. Π’ качСството Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° мултиплСксиранС Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΊΠ°Ρ‚ΠΎ epoll, kqueue, /dev/poll ΠΈ select. Π—Π° мултиплСксиранС Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libuv, която Π΅ надстройка Π½Π°Π΄ libev Π² Unix систСми ΠΈ Π½Π°Π΄ IOCP Π² Windows. Π—Π° създаванС Π½Π° ΠΏΡƒΠ» ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ (thread pool) сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libeio, Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° DNS заявки Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ Ρ€Π΅ΠΆΠΈΠΌ Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ c-ares. Всички систСмни повиквания, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅, сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² ΠΏΡƒΠ» ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΈ слСд Ρ‚ΠΎΠ²Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° сигнали, ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Ρ‡Ρ€Π΅Π· Π½Π΅Π½Π°Π·ΠΎΠ²Π°Π½ ΠΊΠ°Π½Π°Π» (pipe). Π˜Π·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° JavaScript ΠΊΠΎΠ΄ сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° разработСния ΠΎΡ‚ Google Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» V8 (Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Microsoft Ρ€Π°Π·Π²ΠΈΠ²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° Node.js с двигатСля Chakra-Core).

По своята ΡΡŠΡ‰Π½ΠΎΡΡ‚, Node.js наподобява Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€Ρ†ΠΈΡ‚Π΅ Perl AnyEvent, Ruby Event Machine, Python Twisted ΠΈ рСализация ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Tcl, Π½ΠΎ Ρ†ΠΈΠΊΡŠΠ»ΡŠΡ‚ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ (event loop) Π² Node.js Π΅ скрит ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ наподобява ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° прилоТСния Π·Π° node.js Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΠΈΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ спСцификата Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠΉΠ½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ вмСсто изпълнСниС Π½Π° Β«var result = db.query(Β«select..Β»);Β» с ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅ Π½Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ ΠΈ послСдваща ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅, Π² Node.js сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡŠΡ‚ Π½Π° асинхронното изпълнСниС, Ρ‚.Π΅. ΠΊΠΎΠ΄ΡŠΡ‚ сС трансформира Π² Β«db.query(Β«select..Β», function (result) {ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°});Β», ΠΏΡ€ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° към слСдващия ΠΊΠΎΠ΄, Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ заявката сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΏΡ€ΠΈ ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster