Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 12

Ну прекратите уже говорит что есть очередь макрозадач. Это всего лишь название, а фактически это не очередь, а набор задач(set) Из статьи в статью копируют, а потом все удивляются, что новички не знают как на самом деле работает event loop. Вот что написано в спецификации "Task queues are sets, not queues, because the event loop processing model grabs the first runnable task from the chosen queue, instead of dequeuing the first task." https://html.spec.whatwg.org/multipage/webappapis.html#definitions-3

Да, вы правы, в спецификации действительно говорится, что task queues - это множества, а не очереди в строгом смысле FIFO. Это важное уточнение.

Но все же, в большинстве обучающих материалов и документации, включая MDN, используется термин "очередь макрозадач" как метафора, упрощающая понимание. И хотя с технической точки зрения это, все же "набор", его поведение в JS обычно ведёт себя как очередь, что и порождает такую терминологию.

У меня не было цели углубляться в специфику формулировок спецификации. Но в целом, правда есть в вашем комментарии, поэтому можете минусонуть еще раз за "слабый технический уровень статьи"

Спасибо, было интересно почитать, не смотря на то, что я это уже знал 👍

Спасибо =)

Как можно положить функцию на стек а потом её удалить оттуда?

Каким образом информация приведенная в статье поможет мне в написании лендоса или админки на реакте?

Почему то не увидел слово Генераторы среди этих лупов и тасков, хотя это ключевой механизм асинк эвейта.

Значете чем отличается сишный event loop от рантаймового? Вот вот :) И это незгание не мешает вам писать код на js, а новичкам и подавно

В целом ваши вопросы звучат как байт, но новичкам первый вопрос возможно придет в голову, поэтом отвечу на него. Остальные выглядят скорее как риторика.

>>Как можно положить функцию на стек а потом её удалить оттуда?

Если это байт вопрос и вы имели в виду, что можно ли ручками засунуть функцию в стек или удалить ее от туда, то ответ - нельзя, стек управляется движком JS автоматически.

Когда вы вызываете функцию, она автоматически помещается в стек, а когда выполнение этой функции завершено - удаляется.

А, и по вопросу
>>Каким образом информация приведенная в статье поможет мне в написании лендоса или админки на реакте?

В простом лендосе сокрее всего никак, а в реакте, например, не ловить загадочные баги с setTimeout, useEffect и async/await, правильно использовать debounce/throttle, микротаски, и избегать лишнего рендеринга, порой полезно.

Ну как сказать, чутка байчу. Просто эта статья покрывает аспекты, которые в универе пару лет учат фул тайм. Вот вы упомянули компиляторы - это семестр, причем надо прям хорошо кранчить пол года (мне всегда казалось что не функция в стек помещается, а её локальное состояние, переменные или ссылки на кучу). Упомянули евент луп, но какой это луп - ведь "сишный" эвент луп не позволяет асинхронно читать файлы (концепция такая, что в отличии от данных из сети которые нужно ждать, данные из файл уже готовы), поэтому там поверх лупа ещё треды для эмуляции асинхронности. Это ещё семестр операционных систем. Далее - сети, где вы пишите синхронные и асинхронные сокеты - это ещё семестр.

Ну т.е. вы понимаете, что это просто огромный пласт знаний, в котором даже вы путаетесь.

По поводу реакта - да возьмите вью или солиджс (если вам так jsx нравится) и забудьте насовсем про эти ререндеры :)

Ловить загадочные баги с setTimeout, useEffect и async/await - эти баги будут ловиться до тех пор пока программист визуально не запомнит какой код к ошибкам приведет. Про async/await - как я уже сказал, это больше про генераторы. Да и в целом концепция такая абстрактная, что до неё только 10 лет назад чудом додумались.

Все, верно говорите, большой объем, но статься больше научно-популярная для "самоучек" и новичков. Если все сюда прям вписывать то буде "Война и мир". Да и не нужно это все так досконально знать по сути, да. Но в целом начинающим читать будет интересно, я думаю, и если заинтересуются - погуглят еще более подробно. А так да - я согласен.

Статья интересная, но теория без практики ничто и получается прочитал и успешно забыл, имхо. Было бы супер полезно наглядно увидеть пример оптимизации кода, с помощью знаний о "кишках"., т.к. месте новичка я бы поленился после такой простыни что-то идти гуглить)

Про Eventloop и так статей море, аж воротит, а вот знание того же ast помогает писать плагинчики например, которые на практике помогут следить за кодом, что уже полезно. Применений на самом деле масса.

Так же я столкнулся на практике с необходимостью писать производительный js и понимание кишок обработки кода используемой платформы(браузер или node) вообще никак не помогло, скорее чем проще читается и масштабируется код тем лучше, но это база абсолютно везде.

Подчеркну что статья очень интересная, но хочу преуменьшить значимость такой теории без практического закрепления. Горит когда на собесах начинают гонять вот за такие вещи, а в итоге в кодовой базе хаос ужаснейший.

Спасибо за похвалу.
Полностью согласен теория без практики быстро выветривается.Пимер с AST-плагином или хотя бы с живой оптимизацией мог бы сильно усилить статью, но она зараза и так длинная получилась. Может, в следующем раз статья будет про то, как "на практике" — с каким-нибудь ESLint-правилом или Babel-трансформацией.

А последний абзац — прямо жиза, да. Последний обзац дак вообще работодателям да в уши бы.


Спасибо (͡°͜ʖ͡°)

Рад, что зашло

Зарегистрируйтесь на Хабре, чтобы оставить комментарий