Maksim
Viktor
Nikolay
Nikolay
Обычный декоратор. Можно подумать, никогда функции ими не обвешивал :)
Anonymous
https://stackoverflow.com/questions/12503146/create-an-array-with-same-element-repeated-multiple-times
Тут есть хуже)
Maksim
патчить нативное апи. хотя на этом весь ангуляр стоит
Nikolay
Nikolay
Но в целом — обезьяний патчинг есмь зло.
Maksim
никто в здравом уме не пишет код который что-то ломает специально )
Nikolay
Хакеры.
Maksim
имею в виду в своем же коде
Viktor
вспомним еще mootols, который патчил prototype и теперь TC39 не может использовать имена flatten, flatMap в новой версии языка
Nikolay
Maksim
тесты в прод не идут
Nikolay
Viktor
Тесты :)
я думаю, в приложениях, где приходится патчить прототипчик на скорую руку, с тестами беда)
Nikolay
Viktor
технически да, только вот когда я делаю запрос, который меняет состояние системы, потом кто-то его прослушивает и тоже меняет состояние системы, шах и мат в обслуживании наступает быстро
Viktor
под это тесты никто писать не будет
Viktor
:)
Viktor
ппц
Nick
Вопрос - кому могло такое понадобиться?
Viktor
у меня есть догадка
Nikolay
Viktor
https://learn.javascript.ru/write-unmain-code
Viktor
когда-то я с этой статьи так хохотал
Nick
Viktor
У меня есть идея для библиотеки
Eddie
Все привет. Как заставить browser-sync вставлять скрипт в конец body, а не в начало ?
Viktor
короче библиотека проверяет все содержимое стандартных прототипов языка, и выдает то, что изменено, когда ты садишься это рефакторить (не дай бог)
Viktor
ну или CLI инструмент для анализа переприсваиваний)
Viktor
на прототипах
Roman
Viktor
Eddie
Viktor
https://browsersync.io/docs/options/#option-snippetOptions
Viktor
Eddie
Viktor
хотя, признаться, я не очень понял, как это должно работать
Eddie
Viktor
ааааа
Viktor
просто у них там в документации куча опций и ни одна не подписана
Viktor
поэтому мне трудно вообще составить понимание, как это все должно работать
Viktor
не знаю, возможно, тут никак
я объясню в чем тема
setTimeout регистрирует отложенное действие (оно уже асинхронно), которое выполнится *на следующем* цикле Event Loop. То есть сначала выполнится весь текущий синхронный код, затем пойдет следующий цикл, вначале которого выполнится код всех промисов, потом только пойдет очередь за callback'ами setTimeout
Max
Кто-нибудь работал с level базой? возникла такая проблема, если пытаться открыть ее в 2 проектах, то она открывается только в одном проекте, во втором она игнорируется
Viktor
Обрати внимание, где вывелось true у промиса (хотя он и в конце)
Viktor
Пидорас это вообще разные вещи
Viktor
Промис всегда асинхронен
Viktor
Пидорас тебе необходимо разобраться с временной шкалой выполнения кода в Javascript
Viktor
Viktor
Пидорас сейчас консоль лог стоит после промиса, но выполняется он первее
Yury
привет Пидорас :)
Viktor
Пидорас следовательно раз console.log выполняется синхронно, то Promise выполняется асинхронно (даже несмотря на то, что его завершение выглядит синхронным)
Viktor
Пидорас Да вопрос теперь только в порядке формирования этой очереди. Щас покажу
Viktor
Viktor
Пидорас регистрирую я их в прямом порядке, а срабатывают они в обратном
Viktor
Пидорас если setTimeout и Promise (как мы выяснили) оба асинхронны, то почему setTimeout(..., 0) срабатывает в асинхронной очереди после Promise, если регистрируется он первее него
Viktor
Пидорас Есть некоторый приоритет операций, он довольно прост.
——[SYNC]——-[ASYNC_PRE]—--[ASYNC_POST]——> время
Viktor
Пидорас ты лезешь немного глубже нужного, на мой взгляд. Имхо, для объяснения таких вещей низкоуровневые схемы не подходят. Нужно метить в более высокий уровень абстракции от деталей
SYNC - здесь выполняется весь синхронный код (console.log лежит в данном измерении)
ASYNC_PRE - здесь выполняется приоритетный асихронный код, который добавляется всегда в начало оречеди (Promise работает в этом измерении)
ASYNC_POST - здесь выполняется весь остальной асинхронный код (setTimeout работает в этом измерении)
Viktor
вершину айсберга ты увидел из моих скринов. Дальше можешь погуглить, но я сейчас тоже пойщу пару материалов из прошлого
Viktor
Пидорас и скину сюда
Yuri
Yuri
😂😂😂😂😂😂😂😂
Egor
https://github.com/getify/You-Dont-Know-JS/blob/master/async%20%26%20performance/ch1.md#jobs
Viktor
Пидорас не догадки. Сейчас заодно и себе в закладки кину, пригодится. Фундаментальные основы я точно знаю. Однако я хочу найти расширенное описание приоритетов операций в асинхронных очередях. Есть ведь еще операции, помимо Promise и setTimeout (setImmediate, process.nextTick)
Viktor
Пидорас у них всех есть свой приоритет при добавлении в очередь, но я смутно помню, как это выглядит
Egor
Egor
это не из нее, но статья достаточно хорошо все обьясняет
Ant
Maksim
ничего что эта ваша асинхронщина вообще не является частью спеки js, а зависит от окружения?
Viktor
Viktor
Maksim
v8 про асинхронщину ничего не знает
Maksim
ему дают кусок кода js он его выполняет
Viktor
так, вот нашел по теме с более широким списком перечня микрозадач
https://stackoverflow.com/questions/25915634/difference-between-microtask-and-macrotask-within-an-event-loop-context