Этот ролик устарел, более новая и подробная версия тут - kzbin.info/www/bejne/sHXPmGlqm9iEpdk
@danisimo18262 жыл бұрын
не доступно
@LegoMasterteam Жыл бұрын
слишком долго 1 час... лучше за 5 мин посмотрю)))
@HIghtowerSever3 жыл бұрын
Не поверишь, сегодняшний день решил посвятить Event Loop. С утра с десяток видосов посмотрел. Твоя демонстрация одна из лучших. Спасибо!
@UlbiTV3 жыл бұрын
Рад, что полезно, спасибо!)
@crn054 ай бұрын
эффект накопления знаний. Вот это мой первый ролик по event loop, и я ничерта не понял. После 10-го видео на каком-нибудь другом канале напишу под другим роликом тоже самое, что это самый понятный ролик, и наконец-то я все понял))
@АндрійГрушецький-ъ2т3 жыл бұрын
лучше обьяснение за 5 минут которое я когда либо видел хз как для новичков, но для повторения точно шикарно заходит
@РусланДыгов-б7н3 жыл бұрын
Неужели норм объяснение, в интернете много инфы, но адекватной очень мало, автору респект и процветания !!!
@UlbiTV3 жыл бұрын
Спасибо, дружише)
@noname-tm3 жыл бұрын
@@UlbiTVпочему каждое событие летит в Event loop? Event loop ждет очистки stack и только тогда берет callback из Очереди событий и помещает в Call stack.
@ЕвгенийШаталин-с5х3 жыл бұрын
Тимур спасибо за материалы на твоем канале! Весь день оставляю ссылки на твой канал в тематических сообществах по js, сейчас мало таких материалов от практикующих программистов с реальным опытом, так сказать на боевых проектах, одни теоретики кругом) Надеюсь не бросишь канал, удачи в развитии канала!
@UlbiTV3 жыл бұрын
Спасибо большое, не брошу, идем до победного))
@404piano3 жыл бұрын
круто, хочется продолжения ролика про backend для начинающих
@UlbiTV3 жыл бұрын
Будет, но скорее не как продолжение, а как усложнение)
@alexander.gorobets3 жыл бұрын
самое краткое и лучшее объяснение ивент лупа, про которое понятно технически
@ArtOfFun3 жыл бұрын
Офигеть, только сегодня гуглил как он работает))
@UlbiTV3 жыл бұрын
И как, разобрался?)
@ArtOfFun3 жыл бұрын
@@UlbiTV после твое видео точно разобрался)
@ЯрославХарченко-ф2я3 жыл бұрын
Круто, хочеться видео про AWS + Express + Node
@UlbiTV3 жыл бұрын
Спасибо, вероятно будет
@magomedmakhmudov29453 жыл бұрын
Один из лучших каналов по js который я нашёл. Спасибо за работу. Продолжай!
@UlbiTV3 жыл бұрын
Как бальзам на душу) Спасибо!
@RinatYouldashbaev3 жыл бұрын
Sorax, c возвращением!
@OlhaKumanowska3 жыл бұрын
Огромное спасибо, именно с тобой ко мне приходит озарением и понимание всего что изучаю. Остальные очень сложно дончсят информацию, а с тобой это так просто и понятно.... каждый раз удивляюсь, как это просто и что именно ты сделал это настолько очевидным! Спасибо
@UlbiTV3 жыл бұрын
Спасибо большое, очень рад слышать)
@programming59443 жыл бұрын
У тебя очень хорошо получается доносить информацию, мало кто может этим похвастаться
@UlbiTV3 жыл бұрын
Спасибо!) рад слышать
@АлексейБойченко-п5я3 жыл бұрын
Присоединяюсь.
@dimmjetoff9659 Жыл бұрын
У Минина понятней объяснение
@Pan_Jan_Wroclawski3 жыл бұрын
"Старался сделать объяснение максимально простым" - и у тебя это получилось! Спасибо!
@maxet23743 жыл бұрын
Чел спасибо. самое понятное и наглядное из того что я видел. если бы я не был жадным тупым мудаком - за такие труды надо было б поддержать автора финансово
@UlbiTV3 жыл бұрын
Ахахах, главное чтоб полезно было, донаты уже дело второстепенное)
@AGM1405803 жыл бұрын
Спасибо огромное! Полезнее, чем твои обучающие видео, на KZbin я ничего не встречал.
@timprolubnikov3 жыл бұрын
Благодарю за такое подробное объяснение. Читал много статей, но так до конца не понимал, что такое очередь, что такое event loop, что такое веб апи. Теперь все встало на свои места!:)
@dispeltr11833 жыл бұрын
Все супер понятно спасибо большое! Хотелось бы увидеть подробное виде про эвент луп с микро и макро задачами.
@artemtreiko84363 жыл бұрын
Четкий видос! И пофиг на стрелку XD Спасибо
@OlhaKumanowska3 жыл бұрын
Слушатели ещё не изучала, а с этого видео уже поняла что это. Шикарная подача, спасибо
@UlbiTV3 жыл бұрын
Спасибо вам! Стараюсь!
@МариАлекса3 жыл бұрын
Отлично, первый просмотр видео меня волновало только: "да в какую же сторону двигается эта фигура: от меня или ко мне?!"
@stacyahr83213 жыл бұрын
Боже спасибо большое!!! До этого видео вообще не могла понять как ивент луп работает!!Спасибо!!!!
@bigboy30853 жыл бұрын
лучшее объяснение во всем рунете)
@pizdatobi87873 жыл бұрын
Всё видео сидел раздражённый из-за того что стрелка крутится не в своём направлении
@TheProfessionalGambler3 жыл бұрын
это ж JS)
@leonid27133 жыл бұрын
Ахахах
@leonid27133 жыл бұрын
Твой никнейм, видимо, адресуется автору
@user-pd9no5ye5g3 жыл бұрын
а еще и дергалась в какое то время и вращается вокруг смещенной оси)))
@UlbiTV3 жыл бұрын
Монтажер из меня так себе))
@АнтонСоколов-п1ю3 жыл бұрын
Как всегда на высоте. В качестве пожелания ещё бы про контекст и прототипное наследование простым языком, а то я этим пользуюсь, но как то по наитию, не понимая всю суть.
@UlbiTV3 жыл бұрын
Спасибо друг, учту!)
@therapeutic_music_for_sleep3 жыл бұрын
Как раз решила освежить в памяти event loop :) Очень доходчиво объясняете!
@Boortwint3 жыл бұрын
В целом мне понравилось объяснение, но есть непонятные моменты. 5:15 Здесь сделан акцент на том, что благодаря зарегистрированному слушателю события event loop будет продолжать свою работу. На самом деле event loop работает всегда, даже без навешанных обработчиков события, ведь цикл отвечает не только за исполнение javascript кода, но и за перерисовку (layout, paint) вкладки браузера.
@ipa_stor3 жыл бұрын
О, видео для выходных, спасибо, буду знакомиться:))) пс: всем приятного просмотра
@UlbiTV3 жыл бұрын
Спасибо!)
@sandrorekhviashvili68583 жыл бұрын
Самое доступное объяснение из тех, что я видел.
@ТимСлим3 жыл бұрын
Это просто праздник какой-то! (с)
@UlbiTV3 жыл бұрын
Спасибо, Теска!)
@falsetrue79103 жыл бұрын
Просто слов нет, очень круто, колокольчик только на тебя и еще на одного парня стоит, каждому видео радуюсь постоянно, спасибо!!!!!!!!!!!!!!!!
@redhook7773 жыл бұрын
Что за парень, если не секрет?
@UlbiTV3 жыл бұрын
Спасибо вам огромное)
@dann1kid3 жыл бұрын
кроме колокольчика на него стоит?
@victormog3 жыл бұрын
Второй - Минин? 😉
@ИванОкоянный-с9к3 жыл бұрын
не так давно обосрался на первом собесе, не мог нормально рассказать как работает эвент луп, почувствовал себя Орчаковым)) Спасибо Тимур за твои старания, лично мне твои видео очень помогли разобраться с концепциями тайпскрипта и редакса. Искренне желаю тебе огромных(а такие у тебя уже есть) успехов в развитии канала
@friendlyguy78133 жыл бұрын
Прошу про callback отдельно сделать. Лайк оставил
@UlbiTV3 жыл бұрын
Спасибо)
@romahana67973 жыл бұрын
Как бы и до этого видео понимал как работает event loop но за хороший материал можно поставить лайк и написать бесполезный комментарий для пользователей но полезный для автора.
@UlbiTV3 жыл бұрын
Очень полезный!) Спасибо!
@ВладимирГугин-ш7щ3 жыл бұрын
UBIL TV Самое топовое объяснение)
@UlbiTV3 жыл бұрын
Спасибо!)
@ГульзанаКаткелдиева-ъ4ь2 жыл бұрын
Спасибо, не обратила внимание на стрелку так как очень понятно все объяснил
@Unnamed-r8x3 жыл бұрын
Как раз про это надо было на собесе рассказывать ))
@UlbiTV3 жыл бұрын
Получилось?)
@Unnamed-r8x3 жыл бұрын
@@UlbiTV на 50%. Я забыл, что приоритет у промиса больше setTimeout. А так суть объяснил эвентлупа
@mikhailstepanischev83163 жыл бұрын
лучшее объяснение из всех что я видел,спасибо ! Event Loop.
@UlbiTV3 жыл бұрын
Спасибо!)
@user-pd9no5ye5g3 жыл бұрын
в принципе я имел общее понимание, но ты тут очень классно рассказал, смотрел с удовольствием. визуализация просто огонь) усложнять можно думаю, твоя аудитория не "полные чайники", чтоб понимать о чем ты говоришь, нужно иметь базовое понимание. спасибо за контент
@UlbiTV3 жыл бұрын
Спасибо) Учту!)
@theoty-js2 жыл бұрын
благодаря этому ролику я закрепил в голове эту картинку и теперь я меня есть чёткое понимание принципа формирования порядка очереди
@vladyslavfx38923 жыл бұрын
Для поддержки канала)) Давай серию уроков про jest, тестировать можно одно из тех приложений что ты делал в предыдущих видео. Думаю многим будет актуально.
@ЭзамАппаева3 жыл бұрын
Вери крутооооо🤩, не перестаю вами удивляться!Сэнк ю✌🏻Чтоб лайки прибавлялись , а дизы никогда не появлялись!!!!!!!!
@UlbiTV3 жыл бұрын
Спасибо вам за такое пожелание и за такие теплые слова!)
@My-ym9nl3 жыл бұрын
тот случай, когда не зря за 10 минут до тех собеседования посмотрел ролик 😁
@aleksandrzelenskiy40003 жыл бұрын
Хорошее объяснение, но надо на паузу ставить, чтобы вникнуть однозначно
@UlbiTV3 жыл бұрын
Да, согласен, пока монтировал - казалось что норм скорость, но по итогу получилось достаточно быстро
@aleksandrzelenskiy40003 жыл бұрын
@@UlbiTV Я не про скорость съёмки. Про время чтобы уложить это все в голове. А по качеству подачи материала все отлично! Рад что забрёл случайно на этот канал! Желаю процветания и побольше зрителей!
@UlbiTV3 жыл бұрын
Спасибо вам!)
@ОлегПетров-п4у3 жыл бұрын
Тимур, спасибо! Отличное видео про Event Loop.
@lamer4923 жыл бұрын
Еще не смотрел, но скорее всего очередной шедевр, просьба огромная, сделать видео по тематике Async/Await, как это все работает в JS, такие основы более сложных тем JS, может быть даже какой-то проект на ванильном JS сделаешь, и более сложные реализации backend части, и спасибо за такой контент!!!!
@UlbiTV3 жыл бұрын
Спасибо огромное!) учту! Видео по продвинутому бекенду уже в разработке))
@buries_r2 жыл бұрын
те же промисы, но удобнее )
@dmitriipe4kin8382 жыл бұрын
Я работаю как front-end разработчик уже пять лет, но это самое крутое и понятное объяснение по этой теме!!!!Спасибо большое!
@programmeruz97143 жыл бұрын
ты четко объяснил что такое Event loop
@ИгорьПужаков-ъ4о2 жыл бұрын
Все таки визуально проще воспринимать информация, автору спасибо!
@АлександрОстапченко-м4в3 жыл бұрын
Молодец, подача на высшем уровне
@vitaly-3 жыл бұрын
Отличное видео. Хотелось бы видео (какого нибудь там среднего уровня) по nest js + vue 3
@UlbiTV3 жыл бұрын
По несту готовлю видео, не для всех будет, сложный материал
@shyma_grasious3 жыл бұрын
Это лучшая работа в мире) я про канал)
@UlbiTV3 жыл бұрын
Стараюсь для вас!) Рад, что нравится!
@NurFlutterDev2 жыл бұрын
На собеседование спрашивают расскажи про eventloop а я вы про циклы спрашиваете 😂😭🤧 Спасибо за ваш труд теперь буду знать 😁😁😁
@marcelosoian2 жыл бұрын
Просто нельзя! Нельзя пройти мимо не нажав лайк этому видео! Все очень просто и понятно. Спасибо!
@PerryCoxer2 жыл бұрын
Мне кажется сам автор event loop не смог бы так доступно и, главное, наглядно объяснить.
@dogober38612 жыл бұрын
Ulbi как всегда топчик) Еще отдельно почитал про микро и макрозадачи
@travelhuevel3 жыл бұрын
Я уже миллиард статей перечитал об этом. Надеюсь, видео поможет разобраться.
@seeyouagainpesh98193 жыл бұрын
У Владилена Минина глянь.
@travelhuevel3 жыл бұрын
@@seeyouagainpesh9819 глянул, 6 минут он объясняет, что асинхронный код выполняется только после синхронного. По-моему, для этого достаточно 10 секунд.
@seeyouagainpesh98193 жыл бұрын
@@travelhuevel С 7:50 смотри
@travelhuevel3 жыл бұрын
@@seeyouagainpesh9819 а, в итоге он переходит в сервис, создателя которого я уже смотрел с той же темой про event loop. Вряд ли что-то новое услышу там.
@seeyouagainpesh98193 жыл бұрын
@@travelhuevel Хз. Мне стало понятно как работает. Потом еще задачками на асинхронность закрепил и вообще гуд.
@Evgeny..3 жыл бұрын
я в шоке! как все понятно))) Спасибо тебе большое)) отличное видео)) Всех благ тебе))
@romandeveloper77202 жыл бұрын
Сними, пожалуйста, про микро и макро таски. У тебя получится лучше и понятнее всех, как всегда. Хотелось бы фундаментально в голове уложить эти темы, но нигде еще не нашел даже четких определений этих терминов.
@-Forever-Young-2 жыл бұрын
Топ канал. Надо продвигать
@hutoryanin3 жыл бұрын
Доступно, понянтно. Благодарю. *Л. а. й. к.*
@UlbiTV3 жыл бұрын
Спасибо!)
@yuryitikhonoff96313 жыл бұрын
Контент просто огонь, так держать.
@PetyL3 жыл бұрын
Спасибо автору за понятные объяснения сложных тем.
@konstantinv55123 жыл бұрын
спасибо. Четко и наглядно.
@michaelcooper71272 жыл бұрын
Тимур, спасибо вам за все ваши старания и великолепные объяснения! Постоянно когда что-либо забывается, возвращаюсь к вашим видео и закрепляю материал. Очень удобный и информативный формат у вас! Продолжайте в том же духе!
@2difficult2do3 жыл бұрын
Очень круто, Тимур, у Вас талант объяснять просто и наглядно! Спасибо большое за визуализацию и то, что делитесь своими знаниями!
@ЁАсакура-м2ц2 жыл бұрын
Получилось прям мега легко и доступно. Рекспект
@yevhentykhonov28053 жыл бұрын
Отличное видео! Еще бы хотелось очень, чтобы ты разобрал macro и microtask, и как их event loop обрабатывает, мне кажется это многим было бы очень полезно узнать, что Promise и setTimeout под капотом немного по разному обрабатываются
@stangrinn2 жыл бұрын
вот вот, без микро и макро тасок видос не полный
@Den4eg373 жыл бұрын
Крутое обьяснение
@UlbiTV3 жыл бұрын
Спасибо)
@sergsergey42513 жыл бұрын
Спасибо, успехов.
@fuga_eth2 жыл бұрын
Всё начало видео заставлял свой мозг смотреть под разными углами на идущий треугольник
@localixdots96982 жыл бұрын
Спасибо за труды, очень наглядно, довольно понятно, нет лишней воды.
@iNikelas3 жыл бұрын
Очень круто: чётко, без воды. Спасибо!
@АлександрЧекан-к1ы3 жыл бұрын
Все очень наглядно и понятно, спасибо.
@jorgen54623 жыл бұрын
Ну, теперь ты просто обязан про всякие микро- макро- таски рассказать. 🤔😁
@UlbiTV3 жыл бұрын
Про микро и макро таски прочитать 3 минуты, не знаю, что все так суету из за этого навели)
@Proffett893 жыл бұрын
@@UlbiTV на собесах спрашивают
@Zyets3 жыл бұрын
@@UlbiTV наверное потому, что в жонглировании микро- и макро- тасками (а так же рендеринге) и их цикличном(Loop) выполнении и заключается работа EventLoop, а то, что на видео - объясняется работа по большей части CallStack. Содержимое не соответствует описанию.
@mrhollownet86633 жыл бұрын
Хорошее объяснение!
@UlbiTV3 жыл бұрын
Спасибо!)
@redhook7773 жыл бұрын
Ещё было бы неплохо если про промисы и микро/макротаски рассказал
@UlbiTV3 жыл бұрын
Да, уже жалею, что не рассказал)
@scottwalker60713 жыл бұрын
Спасибо, это было круто💪🙏
@shertskoff68523 жыл бұрын
всё понятно, подписка!
@UlbiTV3 жыл бұрын
Спасибо!)
@disposables723 жыл бұрын
Хорошее объяснение, но деталей мало))) Если бы я так отвечал на аттестации(а я примерно так и отвечу), то принимающий экзамен остался бы неудовлетворён. Буду копать дальше))
@UlbiTV3 жыл бұрын
Поэтому в названии «простыми словами»)) чтоб новичкам было понятно
@АльбертПетров-ш2и Жыл бұрын
Спасибо. Теперь я наглядно вижу, что JavaScript - однопоточный язык программирования. Очень то, что я видел, было похоже на монгопоточность.
@yevhenzahorniak8682 жыл бұрын
даже на х2 всё чётко понятно, спасибо
@isaagverdiev13933 жыл бұрын
Спасибо за видео, очень понятное объясняете!
@DrGurgen3 жыл бұрын
Хорошое объяснение а я думал почему js однопоточный но быстрый
@UlbiTV3 жыл бұрын
Спасибо, Гурген)
@victormog3 жыл бұрын
Сложно оценить доходчивость, когда уже сам знаешь, но если не торопясь вдуматься в код, то по анимации должно быть всё ясно... со второго раза - точно!
@UlbiTV3 жыл бұрын
Согласен!) Спасибо!
@travelhuevel3 жыл бұрын
Нужно видео про микрозадачи и макрозадачи.
@apatecyprusestate3 жыл бұрын
Согласен!
@МаркКиреев-к9г3 жыл бұрын
Как всегда супер полезный контент. Спасибо!
@UlbiTV3 жыл бұрын
Благодарю!
@Zhekster7773 жыл бұрын
Топ, как и всегда
@UlbiTV3 жыл бұрын
Благодарю!)
@Виталий-м4ф9ъ3 жыл бұрын
Огромное спасибо 😊
@saskirakosyan52683 жыл бұрын
Great explanation with animations.
@UlbiTV3 жыл бұрын
Благодарю!)
@Valeryi073 жыл бұрын
👍👍👍
@vadimsokhatsky27482 жыл бұрын
Кайф, как все доступно объяснил!
@_GyG_3 жыл бұрын
Как всегда, спасибо!
@UlbiTV3 жыл бұрын
И тебе как всегда спасибо!)
@gomer38943 жыл бұрын
Отличное объяснение! Спасибо за видео, очень помогло .
@lookingforthetruth59033 жыл бұрын
Класс
@UlbiTV3 жыл бұрын
Спасиб)
@victor-trumpel2 жыл бұрын
Несколько раз посмотрел видео, но не понял о чем оно... Во-первых, почему видео об Event Loop, и ни слова про микро и макро задачи? Все, что показано в видео - макрозадачи. Во-вторых "стек вызовов" в данном видео выступает то ли в роли "очереди задач", то ли в роли стека "контекстов функций"... 2:43: secondFunction() не попадает в стек. Это макрозадача - она попадает в очередь задач. Т.к. в очереди она одна, она начинает выполняться и создает свой "контекст выполнения". В этом контексте выполнения макрозадачи выполняются в штатном режиме. console.log('log3') - (макрозадача) выполняется первой т.к. в "контексте выполнения" функции secondFunction() - эта макрозадача оказалась первой. Потом firstFunction() (макрозадача) создает свой "контекст выполнения" и он уже помещается в стек выше, чем контекст выполнения firstFunction(). Но это означает только одно: если бы код был таким: ---------------------------------------- secondFunction() { console.log('logv3'); furstFunction(); console.log('logv4'); } ---------------------------------------- то в "контексте выполнения" secondFunction(), после "макрозадачи" console.log('logv3'); создастся новый "контекст выполнения" для функции firstFunction(). И контекст у firstFunction() в стеке будет выше, чем у secondFunction(). И да, вначале будет выполнятся "очередь задач" из контекста, который находится выше в стеке (тобишь контекст у firstFunction() ) В видео сказано не понятно про что. Что автор имел ввиду под словосочетанием "Стек вызовов". Может оговорка или еще что... ---------------------------------------------- По логике из видео, если функции будут вызываться например так: secondFunction(); firstFunction(); То secondFunction попадет в стек вызовов, потом firstFunction попадет в стек вызовов. И т.к. firstFunction() в стеке будет выше, то вначале будет выполняться она. НО ЭТО НЕ ТАК! Конечно же, автор видео тоже понимает, что вначале будет выполняться secondFunction(), а затем firstFunction(). Но вот новичок в JS, посмотрев данное видео, может вполне подумать иначе. Поэтому, фраза "операции выполняются с вершины стека", в разрезе видео, мне кажется не верной. С вершины стека выполняются не операции, а "очереди задач" из "контекстов функций" в случае, если происходит вызов функции внутри функции. ----------------------------------------- Танцы с бубнами при вызове setTimeout(), где что-то бегало между 3-мя очередями в видео - вообще свели меня с ума. Все что происходит с 3:13 - это макрозадачи и у них есть только одна очередь! Очередь макро задач. И то, что попало в эту очередь раньше - то и выполняется. setTimeout - добавляет колбэк в макрозадачи через время. Если пользователь вначале кликнул, а потом сработал setTimeout то очередь будет выглядеть так: ------------------------ setTimeout клик пользователя --------------------------- Тобишь, вначале в очередь встает клик пользователя, а потом setTimeout забрасывает колбэк в макрозадачи. И вначале выполняется клик пользователя, а потом setTimeout. Если setTimeout сработал раньше, то его колбэк встает в очередь макрозадач раньше, чем клик пользователя (и соответственно выполняется первее, чем клик) Вот и все! Вот статьи, на которыми я руководствовался: learn.javascript.ru/event-loop developer.mozilla.org/ru/docs/Web/JavaScript/EventLoop Интересно, чем руководствовался автор. P.S. В комментариях к видео люди радуются, что они все прекрасно поняли, и что видео понятное. Мне вот интересно, что они поняли)? Если им так все понятно, то в каком порядке, по их мнению, сработает этот код (руководствуясь только данным видео)? setTimeout(() => alert("timeout")); Promise.resolve() .then(() => alert("promise")); alert("code");
@vladislavmac2 жыл бұрын
Вот, наконец то нашелся нормальный человек
@майнкрафт-к2и3 жыл бұрын
Сделай пожалуйста видео курс по material ui! Думаю многим зайдет такой курс! Совсем тяжело понять что да как. Благодарю!))
@UlbiTV3 жыл бұрын
Учту, спасибо!)
@Vlad-us9xt3 жыл бұрын
top!
@UlbiTV3 жыл бұрын
Спасибо!)
@chirkov3 жыл бұрын
Мне бы зашло видео про создание rest api на express с несколькими точками входа, с последующим деплоем
@UlbiTV3 жыл бұрын
Учту!)
@kalobyte3 жыл бұрын
я нихера не понял но опыт программирования контроллеров дает понимание, как это работает я как-то изучал реактпхп, чтобы на пхп клепать серверную часть, которая работает как приложение, хотя пхп для этого не предназначен так вот так тоже есть цикл событий в контроллерах тоже есть бесконечный цикл событий и все команды выполняются по очереди, а если надо что-то вне очереди. то используются аппаратные прерывания и есть обработчики прерываний а есть еще такие вещи, которым не нужны аппаратные таймеры например можно мигать 3мя светодиодами с разной частотой и периодом для этого заводится софтовый таймер и функция, которая возвращает количество милисекунд с момента запуска контроллера дальше вычисляется разность между этими милисекундами и нужным временем срабатывания и выполняется код это обычная задача для написания асинхронных вещей, а когда я узнал, что в вебе это называется реактивным программированием и является чем-то особым, то меня разобрал лютый смех