Декілька цікавих речей про 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

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Раджу знайти на Medium блог Deepal Jayasekara. Там багато цікавих речей дуже гарно описано.

Будь ласка.
Тоді вже можна і на мій Medium підписатись також.

Підписався. Подивимось що ви там пишете))

тому що інші або і так всі знають

А ці дві це секрет таємного ордену? :) Друге вже зовсім банальне зі списків топ х запитань.

Перше — я сам не знав.
Друге — я не знав, що це як враппер

Друге — я не знав, що це як враппер

Взагалі важко уявити над чим це ще може бути враппер як не над колбеками. В 2015-2017 всі кому не лінь облизували тему промісів і давали писати свою мінімальну реалізацію на тестові та як працює jquery.deferred / co.js / bluebird.coroutine, а тут в «популярного англомовного» сенсація. Ще сенсація — async-await це враппер над генераторами з промісами :)

Мене ще не було тоді у професії. Я не застав ці часи)))

Взагалі суть в тому, щоби роботи шортси на англомовні статті переводячи їх на українську. Не всі читають англомовні статті. Не всім хочеться читати тонну тексту, а тут короткий переказ самого основного. Ось

Підписатись на коментарі