Декілька цікавих речей про Node
Усі статті, обговорення, новини про Front-end — в одному місці. Підписуйтеся на телеграм-канал!
Один популярний англомовний YouTube блогер на medium написав статтю про дивні та цікаві речі в Node. Слід зауважити, що в самій статті їх п’ять, але я сфокусуюсь лише на двох, тому що інші або і так всі знають, або вони просто не цікаві. Зазначу, що інформація буде цікава й фронтам, бо стосується JS.
setTimeout, setInterval та console не є JavaScript
Суть в тому, що стандарт лише описує як повинні працювати деякі, здавалося б, базові методи, але кожен рушій JavaScript може реалізовувати його на свій розсуд. За роботу із таймерами в Node відповідає стороння бібліотека Libuv, яка написана на С. І ось наочний приклад як працює setTimeout
в Node:
Від себе додам: у своїй практиці як колись помічав, що в деяких кейсах поведінка console.log в Chrome та FF відрізняється, але тоді я не знав в чому причина. Як виявилось причина в різних реалізаціях, адже у цих двох браузерах різний рушій.
Далі автор наводить приклад як можна імплементувати власну реалізацію функції console.log
та використати його в Node середовищі: код на С++ для рушія V8.
print('Hello World')
Тобто у Node функція console.log
є лише абстракцією до функції C++ printf. Це означає, що якби в Node захотіли назвати console.log якось інакше, то вони могли б це зробити. Тому що всі функції, які існують в JS, визначені специфікацією ECMAScript. Все, що відрізняється від неї, буде специфічним для середовища виконання, в якому виконується JavaScript. Функції setTimeout
та setInterval
використовують той самий підхід. Це лише враппери над функціями в C++.
Promise є лише враппером для коллбеків
Проміси є в специфікації. Це означає, що вони не залежать від середовища виконання як попередні троє. Promise()
лише спосіб роботи з асинхронними операціями та механізм обробки результатів цих операцій після їх завершення. Вони дозволяють писати асинхронний код, який виглядає і поводиться як синхронний, що полегшує його читання та підтримку. Як доказ цього автор наводить приклад власної реалізації промісу для рушія V8 код.
🌏 Оригінал: medium.com
Якщо вам цікаво читати шортси англомовних статей українською, то ви можете більше для себе знайти у моєму блозі crynet.tech або просто підписуйтесь та слідкуйте за моїм linkedin
9 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів