В моем приложении я получаю список хостов, предоставленных пользователем, в форме поля textarea и вставляю их в мою базу данных, используя HTTP POST to API.
Все работает нормально, пока список не превышает 2,5 тыс. Хостов, когда я получаю ошибку net :: ERR_INSUFFICIENT_RESOURCES . Я читал, что это связано с некоторыми Chrome ограничениями.
Как мне преодолеть это ограничение? Я пытался разделить список на группы и ввести некоторую задержку между ними, но это не работает (кажется, что все группы запускаются асинхронно одновременно).
Контроллер:
AddHostsController.$inject = ['$scope', 'Authentication', 'App', 'Hosts', '$filter', '$timeout'];
function AddHostsController($scope, Authentication, App, Hosts, $filter, $timeout) {
var vm = this;
vm.submit = submit;
...some other staff...
function submit() {
var fulllist = [];
vm.firstbunch = [];
vm.secondbunch = [];
fulllist = vm.host_list.split('\n');
vm.firstbunch = fulllist.slice(0,1500);
vm.secondbunch = fulllist.slice(1500,);
$timeout(function() { vm.firstbunch.forEach(submitHost);}, 2000)
.then(firstBunchSuccessFn, firstBunchErrorFn);
function firstBunchSuccessFn(){
vm.secondbunch.forEach(submitHost);
}
function firstBunchErrorFn(){
console.log("Something went wrong!");
}
function submitHost(value, index, array){
App.addhosts(...some args..., value).then(addHostsSuccessFn, addHostsErrorFn);
function addHostsSuccessFn(response) {
}
function addHostsErrorFn(response) {
console.error('Failure!');
}
}
}
Сервис:
.factory('App', App);
App.$inject = ['$http'];
function App($http) {
var App = {
addhosts: addhosts,
};
return App;
function addhosts(...some other.., value) {
return $http.post('/api/v1/hosts/', {
...some other...
value: value
});
}