我正在使用拦截器来保持所有$ http请求的运行计数;每当请求开始时递增,并且每当响应返回时递减。这样做的目的是允许我在没有回复任何响应的情况下显示繁忙的微调器,而不必一遍又一遍地编写相同的代码。
执行繁重的代码就在这里(我已经截断了其他与此无关的拦截器):
$httpProvider.interceptors.push(['$q', '$injector', function($q, $injector)
{
return {
'request': function(config)
{
httpMonitorServiceProvider.activeHttpCalls++;
return config;
},
'response': function(data)
{
httpMonitorServiceProvider.activeHttpCalls--;
return data;
}
}
}
这段代码在大多数情况下都很有用,但是我的一些REST端点只返回没有响应主体的HTTP OK状态代码(用于POST“保存”调用等,无需返回任何内容)。 当没有响应体时,响应拦截器似乎永远不会被击中,因此计数器永远不会再回落。如果我修改端点以返回{}
,它确实有效。
有没有办法拦截没有身体的反应?我可以修改REST端点,但我认为不得不在任何地方返回空对象来解决这个问题。