Таймеры, таймауты, EventEmitter в JavaScript и Node.js

preview_player
Показать описание


#таймеры #eventemitter #асинхронное #программирование #события #nodejs #javascript #js
Рекомендации по теме
Комментарии
Автор

0:30 callback sync/async
1:35 временная задержка sleep.js
5:35 await-sleep.js
8:40 sleep-then.js
9:30 order.js
18:38 precision.js
22:13 blocking.js
22:50 timers.js
29:35 ref-unref.js
32:05 enroll.js
34:57 eventloop.txt
37:37 eventEmitter
44:32 simple.js
47:48 usage.js
48:30 enhanced.js
50:18 star-fix.js
51:10 usage.js
53:15 closure.js
54:50 fp.js
57:10 methods.js
1:06:35 min.js
1:12:31 prod.js

antontelichenko
Автор

33:45 Вот доказательство что учить других это самый лучший вид учение)) Хочу сказать что это самый лучший контент по асинхронного программировании в ноде которого я видел, тема углубленное а примеры простые и классные. Спасибо вам за то что вы делаете Тимур Гафарович!

TimurSevimli
Автор

Если кто зашел сюда за EventEmitter, то вам на 37:42

wantbe
Автор

Классный видос. Особенно спасибо за то, что объяснили, как устроен eventemitter, и за то, что показали, как можно одну и ту же функциональность написать в разных стилях

МаксимЖук-эг
Автор

Прекрасно!) Спасибо Тимур, как всегда на высоте!

railbatyrshin
Автор

Спасибо, довольно сложная объемная тема...

uaplatformacomua
Автор

Очень интересно. Было бы шикарно добавлять тайм-коды:) Подписка и лайк)

АскаровРуслан-лм
Автор

Кстати хочу заметить что скорость исполнения лямбда функции фибоначи в 6м примере на 16й ноде значительно быстрей чем то что мы видим в видео порядка 1200мс что довольно таки много как по мне -) Интересно посмотреть на нодах ниже в 14 и 18 как вариант!

DmytroHaponov-uinu
Автор

А EventLoop і поток виконання js кода, це два різні потоки чи один і той самий? Тобто коли стек js потока звільнився, то поток eventloop починає підкидувати в стек виконані колбеки з черги тасків, чи я щось не так зрозумів?

tonujet
Автор

Добрый вечер, Тимур. Хочу разобраться с работой Event Loop, но просмотрев плейлисты не отыскал релевантного видео у вас на канале. Планируете записать такое видео? Тема интересная в том плане, что общие штуки лупа понятны и их много кто описал, а там где начинаются очереди (таски, микротаски, реквестанимейшнфрейм, рендер) уже запутано. Даже после просмотра докладов Jake Archibald, Erin Zimmer и Philip Roberts на JSConf до конца не разобрался, а на собесах спрашивают + дают мудреные задачи на эту тему

evgeniys.
Автор

5:35 await-sleep.js мы там делаем await sleep(3000) внутри асинхронной функции так вот мне интересно имеел ли смысл там ставить await в данном контексте если в слип мы и так ожидаем увидить промис? )

dmytrohaponov
Автор

3-enhanced.js на 49:57 "обмовка" - Array.unshift не забирає елемент із масиву, а додає його в початок.

dmitriykucheriyvy
Автор

Вообще на практике имхо emit всегда используется отдельно от всего остального (например в агрегатах), и его можно смело делать как emitter.eventName = () => {} через Proxy, задав ему красивый интерфейс в ts)

nikitaproit
Автор

Тимур, а как быть с таким моментом: при once мы удаляем из массива, а в emit мы этот массив обходим. Отсюда следует, что если мы, например, вначале вызовем once а затем например on или еще раз once, то второй обработчик НЕ ВЫЗОВЕТСЯ, т.к. при отработке первого once из массива уйдет первый элемент, а второй станет первым, соответственно forEach этот второй обработчик перескочит. Нехорошо...

АлександрЛебединский-эц
Автор

Слишком затянутое объяснение. Можно было гораздо короче: Лупа и Пупа пошли получать зарплату. Лупа получил за Пупу, а Пупа получил два эвентлупа. Вот и все, теперь вы готовы писать высоконагруженные распределенные системы.

nyannyan
Автор

58:02 Ожидал что once не будет работать, так как мы пытаемся удалить функцию g, а не f. Какая-то магия. Как indexOf ее нашёл?

sergeybatura
Автор

I am a little conffusing. Function g removes himself and on the next line function g call function f. How this is possible? I understand that if I deleted a function, for example, on line 10, this function doesn't exist on line 11.

euStiuMaiBine
Автор

Вот принципиальный вопрос мне не ясен по функц прогр. Здесь как раз в ивент имитере представлены разные подходы к стилю кода, хотя и там и там есть одно замыкание , но на 1:08 пример полностью переписан в функц стиле. Так вот вопрос : я так понял этот пример будет медленее будет работать ? Ну то есть как правило функц стиль ухудшает производительность ? Или это я ошибаюсь ? Или же как вариант это все незначительно ? В общем не понятно тогда как лучше писать - с перемнными или вот так вот цепочкой как на 1:08 .

ЙййЙйй-пб
Автор

Здравсвуйте.
В строке
if(event) {
event.forEach(fn => fn(...data);
}
как я понял, такую конструкцию надо создавать для того, чтобы в оперативной памяти ос было место, куда записывать еще и аргументы ...data.
Я пробывал упростить код и не создавать массив с одним элементом [fn]. Но это не раблтает. Т.е надо создавать массив [fn], а вариант записать fn в переменную не срабатывает. Что интересно, создается обЬект (или список, что одно и тоже, как я понимаю) с ключами 'name' и значениями, представляющими массивы, но с одним элементом
([fn]).
Я вот голову ломал, как обойтись без массивов, но не придумал пока...

ultexplorer
Автор

С EventEmitter вроде было понятно в начале, но как-то быстро потерялась нить событий у меня в голове, что откуда и куда )))
Как все эти связи можно удержать в памяти?

PassintoEurope