Мнение о синхронных запросах в веб-рабочих

Я хочу знать то, что вы думаете об этом. Рекомендуется использовать синхронные запросы (XMLHttpRequest) в веб-рабочем? Какие проблемы я могу найти?

Я проверял это в своем приложении, и я не имею, находят любую проблему. Но я боюсь этого синхронного поведения из-за старого опыта с jQuery и AJAX. Мое приложение достает большой объем данных из нескольких столов в базе данных, и это требует времени. Для каждой связки полученных данных от стола я должен немедленно обработать его, чтобы не задержать все это слишком много. Между тем пользователь взаимодействует с браузером, таким образом, он может быть заблокирован, и я думал, что веб-рабочие будут хорошо работать. Вы вещь, что это - хорошее решение? Или я должен попробовать асинхронными запросами?

Спасибо.

15
nl ja de
Я can' t рекомендуют SJAX (синхронный JavaScript и XML), но I' d нравится видеть некоторые неопровержимые факты также и мои проблемы don' t отражают поведение в многопоточной окружающей среде.
добавлено автор John Dvorak, источник
Это возможно... и зависит от ваших требований, хотя AJAX не был бы AJAX без асинхронного!!!
добавлено автор geekman, источник
Парни спасибо. Я знаю значение в AJAX:), но я видел, что многие люди делают что-то вроде этого, когда они используют веб-рабочих.
добавлено автор Gecko, источник

1 ответы

У меня нет неопровержимых фактов, но так как вы попросили мнения...:)

В Хроме есть выразительная проблема: Слишком много Рабочих по сети могут вызвать тихую катастрофу (заглавные буквы ~60-100, согласно этот отчет об ошибках). Общая проблема - Рабочие по сети, интенсивно использующие ресурсы, по крайней мере с v8.

Принятие вы собираетесь закончить тем, что делали многократные HTTP-вызовы, если вы делаете синхронные HTTP-вызовы в Рабочем по сети:

  • В некотором смысле, вы торгуете асинхронными HTTP-вызовами асинхронных Рабочих по сети, которые будут только добавлять другого посредника в соединение, и все еще необходимо управлять вещами асинхронно.
  • , Если вы идете более простой и более эффективный с точки зрения ресурсов маршрут и только используете одного Рабочего по сети, вы проведете много времени, ожидая его, чтобы дать вам ответы.
  • если
  • , Если, с другой стороны, вы будете использовать многократных Рабочих по сети, которых необходимо будет, вероятно, отслеживать, от которых свободен, какой занят, и т.д., в этом случае вы будете создавать отечественный планировщик вместо того, чтобы использовать то, что прибывает испеченное в браузер.
  • Наконец, Рабочие по сети дорогие (по-видимому), и вы могли бы закончить тем, что создали многократных Рабочих по сети именно так, они могут сидеть без дела и ждать HTTP-вызова конца.

Я не считаю меня экспертом по вопросу, поэтому, пожалуйста, возьмите это если это имеет значение.

Обновление: Добавление некоторых профессионалов/подставляет для различных сценариев.

Некоторые профессионалы/недостатки, которые приходят на ум, выбирая между созданием синхронных и асинхронных HTTP-вызовов, используя Рабочего по сети:

  • Обычно синхронные запросы будет легче написать и приведут к коду, которому легко следовать. Оборотная сторона синхронных запросов, они могли бы поощрить писать долгие функции, которые должны быть вырезаны в отдельные, меньшие функции.
  • , Если вы делаете единственный звонок, нет никакого различия во время, которое требуется, чтобы закончиться между этими двумя методами, и синхронный лучше, потому что это немного более просто. Я говорю, что это только немного более просто, потому что единственное требование asynch с одним слушателем отзыва действительно довольно просто.
  • , Если вы делаете множественные звонки, которые должны произойти в определенной последовательности, как погрузка данных о профиле пользователя и затем получение местной погоды на основе их адреса, синхронные требования, будет лучше, потому что будет легче написать и намного легче читать. Главным относительно чтения его являются последовательные зависимости в требованиях, будет ясно обрисован в общих чертах выбором совершения звонков синхронно и их заказа в функции. Чем больше требований там, тем больше это будет иметь значение. Если будет много требований, различие в сложности, вероятно, будет решительным.
  • , Если необходимо сделать множественные звонки, которых не должно происходить ни в каком определенном заказе, тогда асинхронные запросы, лучше, потому что полный процесс, вероятно, будет порядками величины быстрее, чем с синхронными запросами. Чем больше звонков, которые вы делаете или медленнее связь, тем более значительный различие в полное прошедшее время будет; это различие вырастет очень быстро (по экспоненте?). С точки зрения кого-то читающего код, я думаю, используя синхронные запросы в этой ситуации, были бы несколько вводящий в заблуждение, поскольку это предположит, что есть последовательная природа к требованиям даже при том, что нет. С точки зрения написания ряда запросов asynch, которые не зависят друг от друга, это не должно быть слишком плохо, потому что вы просто установка прилавок, сделайте все звонки, увеличьте прилавок в каждом из отзывов, и вы закончены, когда прилавок равняется количеству требований, вы сделали.

Обновление: @rbrundritt делает очень интересное и соответствующее наблюдение в комментарии на этом ответе:

Одна вещь я нашел работу с веб-рабочими, состоит в том, что они появляются к каждой выгоде свой собственный предел http. Браузеры ограничивают количество параллельных запросов http к приблизительно 8 или 12 в зависимости от браузера перед удушением, которое может быть горлышком бутылки, если у вас есть много просьб обработать. Я нашел, что, если я встречаю своих веб-рабочих запросов, каждый может сделать 8 - 12 параллельных запросов, прежде чем они начнут душить. Это может быть огромной выгодой для некоторых приложений.

@rbrundritt

17
добавлено
@tiffon, Ре" торговля асинхронными HTTP-вызовами асинхронных Рабочих по сети " ключевое. Помещение их в рабочих или объединении рабочих позволяет вам делать таможенный заказ запросов. Если there' s никакая потребность в этом, тогда выгода уменьшена.
добавлено автор Pacerier, источник
Одна вещь я нашел работу с веб-рабочими, состоит в том, что они появляются к каждой выгоде свой собственный предел http. Браузеры ограничивают количество параллельных запросов http к приблизительно 8 или 12 в зависимости от браузера перед удушением, которое может быть горлышком бутылки, если у вас есть много просьб обработать. I' ve нашел, что, если я встречаю своих веб-рабочих запросов, каждый может сделать 8 - 12 параллельных запросов, прежде чем они начнут душить. Это может быть огромной выгодой для некоторых приложений.
добавлено автор rbrundritt, источник
Спасибо за детали. Рабочие по сети великие и я don' t означают подразумевать, что их нужно избежать. Кажется, что имеет большой смысл использовать один для этого. Вопрос мне состоит в том, имеет ли смысл использовать sychronous XHRs. Это будет меньше программирования asynch, потому что только необходимо начать / останавливают Рабочего по сети вместо того, чтобы начать и обращаться с XHRs, также. Действительно сводится к тому, если это действительно ли ценность является занимающим больше времени процессом? Потенциально намного дольше, если у вас есть много HTTP-вызовов, чтобы сделать. Я don' t видят оборотную сторону использования asynch HTTP запросы, если вам только не нужен тот.
добавлено автор tiffon, источник
Np. Я обновил ответ, чтобы подробно остановиться на синхронизации против asynch, немного.
добавлено автор tiffon, источник
@rbrundritt – Потрясающий. Действительно интересный и важный момент. I' m собирающийся вызывать это в ответе, lmk, если вы не соглашаетесь с этим.
добавлено автор tiffon, источник
Хороший. Althought вы говорите, что вы не эксперт по вопросу, ваше мнение, очень интересен.
добавлено автор Gecko, источник
Возможно, я didn' t объясняют все подробности. Я хочу, чтобы уникальный веб-рабочий сделал эту задачу на фоне. Я имею в виду, веб-рабочий с для петли, чтобы восстановить данные из каждого стола, сделать некоторый парсинг и больше материала. Это работает хорошо с синхронными требованиями, но я думаю, что должен использовать некоторые функции обратного вызова, если я хочу использовать асинхронные требования (это лучше?). Это не единственный веб-рабочий в моем приложении, есть, по крайней мере, еще одно управление в то же время, чтобы сделать другие запланированные задачи. Вы думаете, что использование веб-рабочих не оправдано в этом случае? Спасибо.
добавлено автор Gecko, источник
That' s пункт. Что происходит, если я использую синхронные запросы в веб-рабочем? Какие-либо преимущества/риски с этим? Мне действительно нравятся ваши последние два предложения. Чем вы снова.
добавлено автор Gecko, источник
Потрясающий, that' s, в чем я нуждался. Спасибо за разделение вашего мнения:)
добавлено автор Gecko, источник
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском