Всем доброго!
Столкнулся с проблемой отправки более 200 запросов к ресурсам которые не всегда доступны.
Сейчас попробую подробние:
Есть у меня пул из 200+ ip адресов 192.168.1.1 - 192.168.1.254, среди которых, приблизительно только 3 ip валидны, но я не знаю какие именно, и каждый раз это могут быть разные ip.
Тоесть, 1-3 машины с неизвесными IP (известно только пул) на которых запущо http сервер и слушает запросы.
И вот когда я запускаю цикл с 200+ запросами
fetch
они доходят по назначению как когда, 50 на 50. В даном случаи мне ненужен ответ от серверов, мне нужно только 100% отправить запрос, но в связи с тем, что большая часть адресов не валидна, там нет никакого http сервера, или другого девайса вовсе, у меня сыпятся ошибки, через которые запросы могут не доходить к нужным адресам. Вот код:
servers.forEach(server=>{
fetch(`http://${server}:3347/off`, {method: 'POST'})
})
или:
function fetchWrapper(server) {
return fetch(`http://${server}:3347/off`, {method: 'POST'}).then(response => {
return response.json().then(json => {
return response.ok ? json : Promise.reject(json);
});
});
}
servers.forEach(server=>{
fetchWrapper(server).then(console.log.bind(console));
})
Иногда все проходит успешно, а иногда запрос не проходит, а иногда нужно слишком долго ждать(тогда даже в друхиг вкладках ничего не грузится)
Есть у мени я другая часть написаная на Angular 1, но там мне уже нужен ответ:
.factory('extRequest',($http)=>{
return {
getList : (ip)=> {
return $http.get(`http://${ip}:3347/identify`,{timeout: 2000}).
then(answ=>{
return answ['data']
})
}
})
angular.forEach(ips,(ip)=> {
extRequest.getList(ip).then(term =>{
$scope.list.push(term);
})
В Angular наверное нужно использовать очереди
$q
но каких-то подходящих примеров я как-то не нашел или не понял.