gpt4 book ai didi

angularjs - 在 angularjs 拦截器中停止请求

转载 作者:行者123 更新时间:2023-12-03 06:39:36 25 4
gpt4 key购买 nike

如何在 Angularjs 拦截器中停止请求。

有什么办法可以做到这一点吗?

我尝试使用 promise 并发送拒绝而不是解决!

.factory('connectionInterceptor', ['$q', '$timeout',
function($q, $timeout) {
var connectionInterceptor = {
request: function(config) {
var q = $q.defer();
$timeout(function() {
q.reject();
}, 2000)
return q.promise;
// return config;
}
}
return connectionInterceptor;
}
])
.config(function($httpProvider) {
$httpProvider.interceptors.push('connectionInterceptor');
});

最佳答案

我最终使用以下 Angular 拦截器绕过了 Angular XHR 调用:

function HttpSessionExpiredInterceptor(sessionService) {
return {
request: function(config) {
if (sessionService.hasExpired()) {
/* Avoid any other XHR call. Trick angular into thinking it's a GET request.
* This way the caching mechanism can kick in and bypass the XHR call.
* We return an empty response because, at this point, we do not care about the
* behaviour of the app. */
if (_.startsWith(config.url, '/your-app-base-path/')) {
config.method = 'GET';
config.cache = {
get: function() {
return null;
}
};
}
}

return config;
}
};
}

这样,任何请求,POST,PUT,...都会转换为 GET,以便缓存机制可以由 Angular 使用。此时,您可以使用自己的缓存机制,在我的例子中,当 session 过期了,我不再关心返回什么。

关于angularjs - 在 angularjs 拦截器中停止请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25473495/

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