Oleg
Ага, только не везде
Oleg
На столько не везде что только в IE и Edge
Oleg
То есть только у Микрософта
Константин
как раз этот метод и работает сразу же
Oleg
Ладно, не буду тут шуток шутить 😄
Дима
Oleg
Ой ли))
А я там ниже написал кейс
Oleg
Внешний мир может быть суров
Дима
Нет, именно внутри приложения
Дима
Ничто не мешает кривым рукам устроить гонку потоков на промисах
Oleg
Или сделать бесконечный цикл
Oleg
Ну тут увы, архитекрура не поможет 😄
Dima
Dima
Oleg
А оно всё-равно кидает в очередь
Oleg
И продолжает выполнение того кода что есть, а когда завершает - только тогда смотрит очередь
Dima
так смутно несколько лет назаж посмотрел бегом
Oleg
Это, к слову, хороший способ кинуть что-то в конец очереди исполнения
Oleg
Да так же как и везде
Дима
Дима
В браузере минимум 12 мс
Andrey
Timur
Dima
Дима
Oleg
Мир суров
Дима
Ога
Oleg
Не все согласуют спеку, увы
Дима
Браузеры — все
Oleg
А вот про рекурсии конечно странно что так и не внедрили
Oleg
Оптимизацию
Dima
Да так же как и везде
вот как это называется: https://developer.mozilla.org/en/docs/Web/JavaScript/EventLoop
Dima
event loop
Oleg
Да
Дима
Дима
Но своеобразных
Dreamerinnoise
https://twitter.com/horse_js/status/818666826888572928
Дима
Я когда добивался ультра скорости pipe / compose ловил значительный буст от вычисления функций прямо перед возвратом
Дима
типа какая-то фигня там оптимизируется
Дима
Я даже сформулировать это толком не могу >_<
Oleg
Тут уже исходники движков копать нужно
Oleg
Да
Ivan
https://www.youtube.com/watch?v=HPFARivHJRY
Ivan
вроде в этом докладе видел что-то по этому поводу
Andrey
Andrey
Тоже интересно посмотреть, что было сделанно и дало эффект
Дима
А своя реализацая array-flatten даже с этими оптимизациями оказалась медленнее модуля array-flatten
Дима
В итоге модуль оказывается в разы быстрее ramda.compose и redux compose при том что они без уплощения аргументов)
Дима
https://github.com/zerobias/pipe-perf
Дима
Сейчас там бенчмарк выдаёт проценты результатов разных модулей от самого эффективного решения, но только недавно догадался как можно сделать оптимальный бенч — надо от развернутого пайпа проценты и считать) Думаю на следующих выходных добью
Konstantin
Konstantin
https://i.gyazo.com/9d049718af603f46244ab785c2657bd9.png
Andrey
Да, отличная идея) Нужно еще сделать проверку выходных результатов, что все вернут одинаковое значение
Andrey
или я этого не нашел просто)
Andrey
а так, у меня стандартный бенчмарк выглядит так https://gist.github.com/Tom910/41e6f150bc6d1325ebe75f6fe04245bf
Дима
Все сравнить точно не получится, benchmark.js пару миллионов тестов вроде бы прогоняет 😄 Я там небольшой блок smoke test сделал, чтобы видеть какие результаты на самом деле возвращаются
Andrey
не, только один вызов проверять, не все
Дима
А, ну так да
Дима
Ещё одна проблема в том, что одинаковые данные закидывать нельзя, у тех кто выполняется позже может быть преимущество 🤔
Andrey
запускать в отдельной ноде?
Andrey
тогда можно сделать 2 теста, в прогретом состоянии и только холодном
Дима
https://github.com/zerobias/pipe-perf/blob/master/src/bench/data-shuffle.js
Anton
Вопрос по replace. Мне нужно понять является ли объект объектом или массивом. Делаю Object.prototype.toString.call(photos[i]), на выходе получаю
[object Array] или [object Object]
Вопрос: как через 1 replace оставить только Array или Object? Пробовал
Object.prototype.toString.call( photos[i] )
.replace(/\[object |\]/, ""), но на выходе тогда получаю
Array] или Object] (с пробелом в начале). Как лучше избавиться от квадратных скобок, пробелов и object в начале в таком случае?
Dreamerinnoise
Anton
Спасибо
Andrey
Anton
Как вариант решения задачи да, но из спортивного интереса хотелось понять как множественная замена replace делается в подобных случаях, когда у тебя пробелы и спецсимволы
Таймураз
Andrey
Andrey
function -
Функция, вызываемая для создания новой подстроки (помещаемой вместо подстроки из первого параметра). Аргументы, передаваемые функции, описаны ниже в разделе
Andrey
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/replace