ᴡᴇʏʜᴇyʜᴇʏ
и вправду
ᴡᴇʏʜᴇyʜᴇʏ
Спасибо
Дима
Принцип работы most другой
Anonymous
И как это связано?
Я же говорю. Нет возможности отложить выполнение ф-ии на следующий тик (или несколько тиков)
Дима
И как это связано?
Дима
Эта функция ставит таймер
Дима
Она не занимается планированием
Anonymous
Вот именно, как это связано с мостом, который ты скинул на первоначальный вопрос?)
Дима
Как переводится runAsap с английского? 😐
Anonymous
Как переводится runAsap с английского? 😐
Так это будет запланировано в текущий тик, а не следующий! Пойду перепроверю про promise.resolve, на всякий случай...
Дима
Ты упёрся в наличие setTimeout, который вообще предназначен для имплементации delay
Дима
И не замечаешь что я тебе говорю про всё что на скрине кроме этого setTimeout
Anonymous
Нэ понимаю
Дима
Вот и я про что)
Дима
http://mostcore.readthedocs.io/en/latest/api.html#scheduler
Дима
Даже так скорее http://mostcore.readthedocs.io/en/latest/api.html#newscheduler
Дима
Кстати многие вещи лучше выполнять вообще в requestAnimationFrame шедулере, а то и с помощью requestIdleCallback
Дима
fiber реакта кстати работает схожим образом
Anonymous
requestIdleCallback - крутая штука, да
Дима
ric — low priority raf — normal setImmediate — high priority sync — ring 0
Anonymous
ric — low priority raf — normal setImmediate — high priority sync — ring 0
О, звучит круто, где ты это нашел?
Anonymous
https://w3c.github.io/requestidlecallback/#the-requestidlecallback-method Не вижу ссылку на описание options
Дима
Это я сейчас сформулировал исходя из свойств этих функций исходя из наличия такой технологии как sсheduler
Anonymous
https://github.com/w3c/requestidlecallback/issues/68
Дима
We find ourselves — да, именно так
Дима
Как видишь, от твоего вопроса до приоритизации пара шагов)
Дима
Вполне естественно что автор топика по ссылке — sebmarkbage
Bohdan
https://gist.github.com/artalar/389f013f5f351fe6a25064d5fde234db
разве setTimeout не откладывает выполнение в следующий тик?
Anonymous
разве setTimeout не откладывает выполнение в следующий тик?
https://www.w3.org/TR/html/webappapis.html Timers can be nested; after five such nested timers, however, the interval is forced to be at least four milliseconds.
Anonymous
Вполне естественно что автор топика по ссылке — sebmarkbage
А по мне так странно, что вопрос всплыл только в октября
Anonymous
Но, видимо, не было спроса, не думали и над предложением
Дима
Но, видимо, не было спроса, не думали и над предложением
Чел немного занят был — создавал файбер
Дима
И другие 100500 пропозалов которые он регулярно предлагает)
Anonymous
что это обьясняет?
Если ты не пишешь на чистом js и не контролируешь количество последовательных таймаутов (твой код крутиться \ использует другие библиотеки, использующие таймауты), то может выйти, что setTimeout(f, 0) выполниться только через 4 мс
Дима
Он однозначно выполнится позже 4мс
Anonymous
пчму?
Дима
Поэтому существует setImmediate
Дима
пчму?
Потому что так по спеке
Anonymous
Потому что так по спеке
Так вон ссылка, по спеке все сразу, если не 5 раз подрят
Bohdan
с чего ты взял?
потому что вечный цикл в текущем тике не даст выполниться сеттаймауту никогда. это норм доказательство?
Bohdan
Если повезёт
да, я не совсем точно написал
Anonymous
потому что вечный цикл в текущем тике не даст выполниться сеттаймауту никогда. это норм доказательство?
Так наоборот, он не просто не кладется в следующий тик, он кладется в после(*4000000)дующий тик
Дима
Так вон ссылка, по спеке все сразу, если не 5 раз подрят
Ты дал ссылку на огромную главу, куда точнее смотреть?)
Anonymous
Ты дал ссылку на огромную главу, куда точнее смотреть?)
Ну че такое Timers can be nested; after five such nested timers, however, the interval is forced to be at least four milliseconds.
Anonymous
Причем at least - вот это вообще не понятно, какой константой управляется. Я встречал разные иследования, у кого-то выходило и 5.5мс
Bohdan
Так наоборот, он не просто не кладется в следующий тик, он кладется в после(*4000000)дующий тик
как я понимаю, там есть очередь. И таска берется из очереди и проверяется на возмножность выполниться в данный момент
Anonymous
как я понимаю, там есть очередь. И таска берется из очереди и проверяется на возмножность выполниться в данный момент
Нет, колбек для таймаутов и интервалов хранится отдельно и кладется в очередь по завершению времени
Bohdan
интересно
Anonymous
Ну вот да, не понятно какие там факторы)
Дима
да вполне понятно)
Anonymous
М?
Anonymous
Ты про время выполнения тика?
Anonymous
Тип 4ms + время выполнения тика, во время которого колбек был положен в очередь?
Anonymous
А есть ли еще что?
Anonymous
А то из спеки как-то не ясно
Anonymous
> at least
Дима
Старые браузеры имеют минимум 10 мс таймаут, помимо этого влияет категория девайса устройства, активность данного Realm и статус энергопотребления процессора
Anonymous
ясно понятно
Дима
Поэтому есть setImmediate и sync)
Anonymous
Скажи это хрому
Дима
Сказали)
Anonymous
Где?
Дима
Дима
У всех проектов на реакте существует по дефолту
Дима
В свою очередь, я когда понял, что нужна приоритизация, то просто взял нужные полифиллы и не стал забивать себе голову
Дима
Скажи это хрому
yarn add raf ric setimmediate
Anonymous
Надо исходники глянуть, спасибо
Дима
Да, полезно понимать как работает либа setimmediate, но самому её имплементировать при этом не обязательно 🌚
Nikita
Всем привет! Ищу старших разработчиков и архитекторов Java в ведущий российский IT-интегратор, в подразделение, специализирующееся на внедрении и кастомизации BPM решений. Работа в офисе в центре Москвы. Социальный пакет (ДМС, питание, фитнес). Заработная плата до 250 000 рублей. Звоните, пишите. Буду рад откликам и рекомендациям.
Anonymous
Дим, напомни, почему ты из java ушел?
Maxim
подскажите, пожалуйста, в таком вопросе: собрал список промисов, мне нужно их выполнить по очереди, т.е. не приступать к выполнению следующего пока не зарезолвился предыдущий? я начал делать примерно так: let promises = []; let promise = new Promise(() => { toDoFunction() }); promises.push(promise); Promise.race(promises).then(() => { promises.unshift(); }).catch(failure); но в моей реализации все равно промисы выполняются не дожидаясь завершения предыдущего(
wp0
промис-куитет
Anonymous
(async (tasks, task) => while(task = tasks.pop()) await task())()
Maxim
о спасибо, попробую