gpt4 book ai didi

javascript - Angularjs 多个 HTTP POST 请求导致 net::ERR_INSUFFICIENT_RESOURCES

转载 作者:行者123 更新时间:2023-12-02 21:47:15 51 4
gpt4 key购买 nike

在我的应用程序中,我以文本区域字段形式获取用户提供的主机列表,并使用 HTTP POST 到 API 将它们插入到我的数据库中。

一切正常,直到列表超过 2.5k 主机,当我收到 net::ERR_INSUFFICIENT_RESOURCES 错误时。我读到它与 Chrome 的一些限制有关。

如何克服这个限制?我试图将列表拆分为束,并在它们之间引入一些延迟,但它不起作用(似乎所有束都是同时异步启动的)。

Controller :

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
});
}

最佳答案

不要并行执行请求,而是链接它们:

var configArr = [/* Array of config objects */];
var resultsArrPromise = configArr.reduce( reducerFn, $q.when([]) );

responseArrPromise
.then(function (responseArr) {
responseArr.forEach( response => console.log(response.data) );
}).catch(function (errorResponse) {
console.log(errorResponse);
});

function reducerFn(acc, config) {
var accArrPromise = acc.then(function(responseArr) {
var httpPromise = $http(config);
return $q.all( [...responseArr, httpPromise] );
});
return accArrPromise;
}

reducer 以一个空数组的 promise 开始。 reducer 的每次迭代都会将另一个 HTTP promise 链接到响应数组。结果是一个 promise ,解析为一系列响应。通过链接 HTTP 请求,它们将按顺序执行,而不是并行执行。

关于javascript - Angularjs 多个 HTTP POST 请求导致 net::ERR_INSUFFICIENT_RESOURCES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60223398/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com