#1 DOM в WebWorker? Как? - Многопоточность и DOM
7 879 просмотров • 3 августа 2022 г.

Alexandr Gulevskih
19.08.22 в 07:25
Решается через синхронный XmlHhttpRequest делаем запрос перехватываем его держим открытым и параллельно делаем свои асинхронные делишки.
Traktor
13.08.22 в 18:03
Сделать бесконечный цикл, который будет проверять пришло ли ответное сообщение, только тогда надо будет использовать этот sharedArrayBuffer объект. Хз, мне кажется может получиться
Bubble Sort
09.08.22 в 20:06
А куда идти за пирожком?)
Mettadon
08.08.22 в 16:50
Очень круто, спасибо за видео!
Sergey Vronskiy
07.08.22 в 14:31
Очень умный парень, очень много делает для всех, надеюсь ума хватит, чтоб не загребли и не отправили в мясорубку
Icy Shine
06.08.22 в 20:56
Похорошел кстати
melo malo
05.08.22 в 19:03
Берегите себя Илья!
mr alex
05.08.22 в 16:11
а куда пропал мой коммент где я описал один из способов?
Alexey Ku
04.08.22 в 20:52
. while(true) // ждём ответа
Это анти-паттерн в основном потоке , но в воркерах, почему бы и нет? Конечно же с точки зрения cpu неэффективно и батарейку будет жрать только в путь, но кого это волнует в наше время))
Maksim Nesterenko
04.08.22 в 18:47
Уууу... ну поток блокируется бесконечным циклом хорошо :) можно просто сделать while(waitForReply) какой-нибудь и он должен подвешать поток. А внутри цикла как-то проверять новые сообщения от основного потока в надежде что придет то самое сообщение и разблочит поток. Не знаю даже как еще можно "приостановить" поток. Но сомнительно что бесконечные циклы в фоне хорошая идея. И не совсем понятно как изнутри цикла который заблокировал поток будут выполняться те же слушатели для postmessage. По идее никак если поток блокирован.Такая себе идея получается.
Еще думал про какую-нибудь shared memory между основным потоком и воркером чтобы сделать операцию синхронной. Можно было бы в эту сторону покопать.
cliff hanger это ты конечно хорошо придумал, заставляет хотя бы немножко подумать над решением, что лучше чем просто его сразу узнать с точки зрения получения информации
Никишкин Александр
04.08.22 в 15:15
Запустить вызов микротасков бесконечно в зависимости от флага. Потом когда получили обраный ответ снять флаг.
Roman
04.08.22 в 13:38
while c pointer?
Самандар aka P1GAS
04.08.22 в 07:04
А если в функцию добавить setTimeout которая вызывает эту же функцию до тех пор, пока операция не завершилась
Dime
04.08.22 в 04:00
Сорян, но произношение слов width, height, query - боль.
Anton Kolesnikov
03.08.22 в 23:38
До конца не додумал мысль, но вариант такой: под капотом async у нас promise и генераторы. Поэтому возможно что-то похожее.
Alex Grib @ XHT
03.08.22 в 22:58
Если я не ошибаюсь, запуск скриптов в Worker'е с проксированием DOM умела ещё AMP
Demetrio
03.08.22 в 22:12
Крутить while в котором проверять что в SharedArrayBuffer появилось значение, которое записывать из основного потока?
Bogdan Onischenko
03.08.22 в 21:44
Спустя пару минут гугления, нашел вот такую штуку: Atomics.wait(), которая позволяет синхронно подождать какой то таймаут. Т.е. мы можем "уснуть" на какое то время, и потом проверить, а не пришло ли уже значение из главного треда. Звучит как рабочий вариант. Ну и еще из глупого решения - сделать бесконечный while, который будет грузить cpu.
bro-dev
03.08.22 в 21:39
Тупой способ это проверка шаредбуфера в вайле. Продвинутый тоже самое, но на бэке делаем апи которые отвечает ровно через сек, а в вайле дергаем эту апи синхронным XHR.
Sten451
03.08.22 в 20:14
Только сегодня вспоминал Вас, давно видео не было, начал волноваться... Берегите себя.
Александр Прозоров
03.08.22 в 19:26
Вероятно в итоге все равно потребуется обменяться SharedArrayBuffer и повесить мьютекс на функцию работающую с DOM. Если код из WW хочет получить offsetWidth, а затем, основываясь на этом значении что-то сделать с DOM - эта операция должна быть атомарной (что, если другой поток поменяет ширину элемента в промежутке между обменом сообщениями). Главный поток гарантирует нам атомарность при работе с DOM, а рассмотренном случае мы ее теряем.
Yevhen Badorov
03.08.22 в 19:05
Треба м'ютекс реалізований через shared array buffer, як Тимур реалізовував тут https://www.youtube.com/watch?v=JNLrITevhRI
Витя Полторацкий
03.08.22 в 17:22
Кроме генераторов в джс ничего нет пока , чтоб это сделать адекватно
Eugene Karataev
03.08.22 в 17:03
Как заблокировать эвентлуп? Через микротаски!
Максим Гринберг
03.08.22 в 16:52
yield
Eugene Karataev
03.08.22 в 16:50
Спасибо что контент снова на русском. Астрологи предсказывают увеличение аудитории в 10 раз
Дима Чухарев
03.08.22 в 16:45
Atomics.wait() ??
Alex Roberto
03.08.22 в 16:23
Можно топорно заблокировать бесконечным циклом с проверкой (прощай CPU). Вообще как то пробовал делать что то похожее на sleep при синхронном исполнении.
Александр Гук
03.08.22 в 16:04
Очень актуальная тема. Жду продолжения. Как заблокировать эвентлуп, хотя бы одним из способов, понятно, интересно как его потом разблокировать.
sergeyvp
03.08.22 в 15:52
Если потоки могут обмениваться объектами, значит воркер может просто запросить объект, поставить блокировку на изменение этого объекта в основном потоке, сделать всё что нужно и вернуть объект в основной поток сняв блокировку с него. Зачем блокировать эвентлуп?
KristinaShi
03.08.22 в 15:20
❤️
Станислав Миляев
03.08.22 в 15:13
Занятно. Спасибо.
Андрей Новиков
03.08.22 в 15:13
Илья, спасибо вам большое за ваш вклад в сообщество! Вы прекрасный человек и специалист! Здоровья вам и мира этому миру!
Любомир Петелюк
03.08.22 в 15:10
Яка ситуація у Харкові? Привіт з Франківська)
Mur Amur
03.08.22 в 15:00
ответ наверное генераторы?
так как это единственное что приходит на ум
Илья Брежнев
03.08.22 в 14:46
интригант )))
Рекомендации:
4 900 просмотров •
3 августа 2022 г.
5 566 просмотров •
2 июля 2022 г.
3 623 просмотра •
28 апреля 2022 г.
10 804 просмотра •
24 апреля 2022 г.
10 199 просмотров •
17 апреля 2022 г.
5 242 просмотра •
17 апреля 2022 г.
4 456 просмотров •
10 апреля 2022 г.
4 957 просмотров •
5 апреля 2022 г.
5 050 просмотров •
3 апреля 2022 г.
3 848 просмотров •
3 апреля 2022 г.
17 277 просмотров •
2 апреля 2022 г.
12 567 просмотров •
29 марта 2022 г.
6 886 просмотров •
8 декабря 2021 г.
11 547 просмотров •
8 декабря 2021 г.
9 984 просмотра •
10 января 2022 г.
18 700 просмотров •
5 февраля 2022 г.
Marina Bryleva
23.08.22 в 16:58
alert/prompt можливо блокуe чергу. Iлья, дякую за вiдео