Viktor
Вот это неожиданно Не знал о таком
я когда-то в твиттере вычитал)
Nikolay
Обычный декоратор. Можно подумать, никогда функции ими не обвешивал :)
Anonymous
https://stackoverflow.com/questions/12503146/create-an-array-with-same-element-repeated-multiple-times Тут есть хуже)
Maksim
патчить нативное апи. хотя на этом весь ангуляр стоит
Nikolay
Но в целом — обезьяний патчинг есмь зло.
Maksim
никто в здравом уме не пишет код который что-то ломает специально )
Nikolay
Хакеры.
Maksim
имею в виду в своем же коде
Viktor
вспомним еще mootols, который патчил prototype и теперь TC39 не может использовать имена flatten, flatMap в новой версии языка
Maksim
тесты в прод не идут
Viktor
Тесты :)
я думаю, в приложениях, где приходится патчить прототипчик на скорую руку, с тестами беда)
Viktor
технически да, только вот когда я делаю запрос, который меняет состояние системы, потом кто-то его прослушивает и тоже меняет состояние системы, шах и мат в обслуживании наступает быстро
Viktor
под это тесты никто писать не будет
Viktor
:)
Nick
никто в здравом уме не пишет код который что-то ломает специально )
Недавно дебажил интересную штуку, потратил несколько часов а оказалось, проблема была в том, что кто-то переопределил Date.now() на возврат не таймстемпа, а форматированного времени строкой
Viktor
ппц
Nick
Вопрос - кому могло такое понадобиться?
Viktor
у меня есть догадка
Viktor
https://learn.javascript.ru/write-unmain-code
Viktor
когда-то я с этой статьи так хохотал
Nick
https://learn.javascript.ru/write-unmain-code
Видимо чувак этим и руководствовался
Viktor
У меня есть идея для библиотеки
Eddie
Все привет. Как заставить browser-sync вставлять скрипт в конец body, а не в начало ?
Viktor
короче библиотека проверяет все содержимое стандартных прототипов языка, и выдает то, что изменено, когда ты садишься это рефакторить (не дай бог)
Viktor
ну или CLI инструмент для анализа переприсваиваний)
Viktor
на прототипах
Viktor
Все привет. Как заставить browser-sync вставлять скрипт в конец body, а не в начало ?
а он точно отвечает за вставку? или это делает сборщик
Viktor
https://browsersync.io/docs/options/#option-snippetOptions
Viktor
не, browserSync вставляет, автоматом
наверное, это настраивается здесь
Viktor
хотя, признаться, я не очень понял, как это должно работать
Eddie
хотя, признаться, я не очень понял, как это должно работать
настройка сниппета, который вставляеться в страницу
Viktor
настройка сниппета, который вставляеться в страницу
а сниппетом у них называется любой JS скрипт что ли?
Eddie
а сниппетом у них называется любой JS скрипт что ли?
ну как любой, только тот, который вставляет в страницу, для связи с browserSync , чтобы страница перезагружалась
Viktor
ааааа
Viktor
просто у них там в документации куча опций и ни одна не подписана
Viktor
поэтому мне трудно вообще составить понимание, как это все должно работать
Eddie
поэтому мне трудно вообще составить понимание, как это все должно работать
перед загрузкой страницы, регулярка (rule.match) ищет куда вставить тот самый скрипт, если находит совпадение, вставляет, если нет, соотвецтвено нет. ну я втсавил рандомную строку, и мне скрипт перестало вставлять, но я его вставил в ручную, и все работет
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
Пидорас у них всех есть свой приоритет при добавлении в очередь, но я смутно помню, как это выглядит
Viktor
https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/
Спасибо. Я так и не добрался до серии книг Кайла Симпсона YouDontKnowJS
Egor
это не из нее, но статья достаточно хорошо все обьясняет
Ant
Maksim
ничего что эта ваша асинхронщина вообще не является частью спеки js, а зависит от окружения?
Viktor
это не из нее, но статья достаточно хорошо все обьясняет
вторая статья просто прекрасна, я пощелкал сейчас
Maksim
v8 про асинхронщину ничего не знает
Maksim
ему дают кусок кода js он его выполняет
Viktor
так, вот нашел по теме с более широким списком перечня микрозадач https://stackoverflow.com/questions/25915634/difference-between-microtask-and-macrotask-within-an-event-loop-context