Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 18.11.2021, 08:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от JobLack
Идеально было бы - на несколько миллисекунд останавливать цикл, чтобы сделать промежуточный рендер.
В моем варианте даже останавливаться не нужно... Просто забирай или отрабатывай готовые данные из "общедоступного места".
Ответить с цитированием
  #12 (permalink)  
Старый 18.11.2021, 08:59
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от ksa
Процесс пишет что-то о себе в "общедоступное место"...
Остается только с неким таймаутом мониторить "то место"
Процесс пишет. А мониторит кто? Второй процесс? А как в js без worker сделать второй процесс?
Ответить с цитированием
  #13 (permalink)  
Старый 18.11.2021, 10:40
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от voraa
А мониторит кто? Второй процесс?
Да.
Сообщение от voraa
А как в js без worker сделать второй процесс?
Еще один setTimeout()...
Ответить с цитированием
  #14 (permalink)  
Старый 18.11.2021, 10:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

voraa, рендеринг "по готовым данным" можно запускать и из процесса "обработчика".
Т.е. собственно мониторинг может только показывать "состояние дел". А сами изменения на клиенте может запускать процесс-обработчик некими "порциями".
Подготовил N-ное количество - запускай setTimeout(), который все N штук и отрисует...

Тут главное чтобы сам "источник данных" был доступен всем процессам-участникам.
Ответить с цитированием
  #15 (permalink)  
Старый 18.11.2021, 11:30
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от ksa
Еще один setTimeout()...
setTimeout не запускает новый процесс. Он просто ставит обработчик в очередь внутри одного процесса
Сообщение от ksa
А сами изменения на клиенте может запускать процесс-обработчик некими "порциями".
Подготовил N-ное количество - запускай setTimeout(), который все N штук и отрисует...
И зачем setTimeout, если есть requestIdleCallback?
Используя setTimeout, мы тупо пихаем очередное задание в очередь, не зная сильно ли она заполнена. Есть ли у браузера время обработать это задание не тормозя прорисовку. А requestIdleCallback выполняет задание именно тогда, когда браузер не занят обработкой событий, пересчетом стилей и прорисовкой. К тому же внутри задания можно узнать, осталось ли еще время, что бы посчитать очередную порцию.
Ответить с цитированием
  #16 (permalink)  
Старый 18.11.2021, 11:52
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от voraa
setTimeout не запускает новый процесс.
Это я условно так написал...
Потому и указывал много чего в кавычках...
Ответить с цитированием
  #17 (permalink)  
Старый 18.11.2021, 11:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от voraa
И зачем setTimeout, если есть requestIdleCallback?
requestIdleCallback не всегда был в JS...
А коней на переправе не меняют.

Т.е. работает такой подход уже давно... А нужен он далеко не всегда.
Ответить с цитированием
  #18 (permalink)  
Старый 18.11.2021, 11:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от voraa
А requestIdleCallback выполняет задание именно тогда, когда браузер не занят обработкой событий, пересчетом стилей и прорисовкой. К тому же внутри задания можно узнать, осталось ли еще время, что бы посчитать очередную порцию.
Я не критикую такой подход.
Я лишь описал как выходил их таких положений ранее сам.
Ответить с цитированием
  #19 (permalink)  
Старый 18.11.2021, 11:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от voraa
если есть requestIdleCallback?
Вот решил почитать про него...
https://developer.mozilla.org/ru/doc...stIdleCallback
И сразу там увидел большое сообщение
Цитата:
Experimental: Это экспериментальная технология
Ответить с цитированием
  #20 (permalink)  
Старый 18.11.2021, 12:12
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от ksa
requestIdleCallback не всегда был в JS...
А коней на переправе не меняют.
В JS не всегда были requestAnimationFrame, forEach, Map, Promise, async/await .... Всякие ?. ??
Это не повод ездить на старых клячах.

Сообщение от ksa
И сразу там увидел большое сообщение
Цитата:
Experimental: Это экспериментальная технология
Я же сразу написал, "если не думать про Safari" (ИЕ нашего времени)
Для Safari есть типа полифил (реализованный как раз через setTimeout).
Ну хоть в нормальных браузерах будет нормально работать.

Последний раз редактировалось voraa, 18.11.2021 в 12:15.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Gulp4 не обновляет браузер после изменений в scss DVV Общие вопросы Javascript 0 08.12.2020 16:04
Воспроизведение звука, если браузер свернут lolka84 jQuery 3 25.09.2020 14:20
Запрос в браузер через js Enot990 Общие вопросы Javascript 2 11.12.2017 11:32
Сайт торент видео онлайн (через браузер). nemo84 Ваши сайты и скрипты 1 18.05.2013 21:07
как проверить поддеружет браузер определенное событие? GOll Элементы интерфейса 9 24.07.2008 14:40