gpt4 book ai didi

javascript - 使用 AngularJs 基于优先级的 Http 请求?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:28:43 24 4
gpt4 key购买 nike

我正在使用 Angularjs 发送多个 http 请求。

我们可以为某些请求设置优先级吗?

我一直在根据需要发送 http 请求。我无法按顺序发送请求 http 请求

我们能否以某种方式设置优先级

有什么想法吗?

谢谢

最佳答案

嘿,我建议你使用一个 http 拦截器服务,你可以像这样监视每个请求和响应,这只是一个想法

.factory('httpInterceptor', function ($q, $rootScope, $filter) {
var canceller = $q.defer();
var numLoadings = 0;
var serialRequests = false;
var timeO;
var time1;
var loadingbar = { loading: "<progress value='?' max='10'></progress>" };
var loadingspinner = { loading: '<ion-spinner icon="crescent"></ion-spinner>' };

return {
request: function (config) {

if (config.url.indexOf('http') > -1 && config.url.indexOf('UpdateDeviceOnlineState') == -1 && config.url.indexOf('maps.googleapis') == -1) {
console.log(config);
//timeout if request takes longer than 15 sec spinner is removed request is cancelled and alert is called
//config.timeout = canceller.promise;
//var time1 = setTimeout(function () {
// canceller.resolve('Unauthorized');
// $rootScope.$broadcast("all_requests_done");
// alert('keine verbindung');
//}, 15000);

numLoadings++;
if (serialRequests == false) {
//if (config.url.indexOf('http') > -1) {
// loadingbar.percent = numLoadings;
// $rootScope.$broadcast("open_requests", loadingbar);
//} else {
// $rootScope.$broadcast("open_requests", loadingspinner);
//}
$rootScope.$broadcast("open_requests", loadingspinner);
} else {
clearTimeout(timeO);
}
}

return config || $q.when(config)
},
response: function (response) {

if (response.config.url.indexOf('http') > -1 && response.config.url.indexOf('UpdateDeviceOnlineState') == -1 && response.config.url.indexOf('maps.googleapis') == -1) {
//clearTimeout(time1);
serialRequests = true;
numLoadings--;

timeO = setTimeout(function () {
serialRequests = false
if ((numLoadings) === 0) {
$rootScope.$broadcast("all_requests_done");
}
});
}
return response || $q.when(response);
},
responseError: function (response) {

if (response.config.url.indexOf('http') > -1 && response.config.url.indexOf('UpdateDeviceOnlineState') == -1 && response.config.url.indexOf('maps.googleapis') == -1) {
serialRequests = true;
numLoadings--;

timeO = setTimeout(function () {
serialRequests = false
if ((numLoadings) === 0) {
$rootScope.$broadcast("all_requests_done");
}
});
}
return $q.reject(response);
}
};
})

但我认为你必须在这里使用 promises。 $http 有一个超时属性,你可以用它来优先排序你的请求

$http docs for timeout

关于javascript - 使用 AngularJs 基于优先级的 Http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31316437/

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