Определите приоритеты определенных запросов XHR над другими, используя Axios - PullRequest
0 голосов
/ 12 ноября 2018

Я делаю страницу, которая использует Axios, чтобы сделать несколько десятков AJAX-запросов, которые немного медленны, но это нормально, так как я использую Vue.js, чтобы просто показывать данные как входящие. Остальная часть страницыприятно и отзывчиво, пока это происходит в течение 30-60 секунд.

Теперь, когда пользователь выполняет какое-либо другое действие, которое также генерирует запрос PUT или POST, обычно запрос не выполняется до тех пор, пока не дойдет до «своей очереди», как это предписано браузером, который, кажется, делаетисходящие XHR-запросы «первым пришел - первым обслужен».Таким образом, это новое действие значительно задерживается из-за текущих запросов на выборку данных.

Есть ли способ через Axios или любой другой подход просто сделать эти дюжины запросов на выборку данных «низкоприоритетными», чтобы любой новыйзапрос может немедленно получить следующее доступное исходящее HTTP-соединение?

Я полагаю, я мог бы написать некоторые функции, которые обрабатывали бы очередь, а затем ложно передавать запросы в Axios, но мне кажется, что должен быть более простой способ,Есть мысли?

1 Ответ

0 голосов
/ 19 декабря 2018

Мне пришлось реализовать собственную схему, в которой мой код Javascript подает в браузер ложку (через axios) мои AJAX-запросы с использованием массива, такого как const requestQueue = [] и массива текущих обещаний const pendingRequestPromises = []. Там может быть несколько разных способов сделать это; одним из способов было обновить каждый массив как перед вызовом, так и в обратных вызовах для каждого запроса; затем, когда pendingRequestPromises.length равно или превышает пороговое значение (скажем, 3), вызовите следующий запрос с await, а не с помощью метода «забей и забудь». Таким образом, запросы выполняются пакетами по 4, и между пакетами может выполняться другой код.

Это похоже на работу библиотеки ... может, мне стоит написать? Дайте мне знать, если вы могли бы использовать такую ​​вещь.

...