Javascript 如何使用服务装饰器查看$http.get中变量的值
使用AngularJS$provide decorators,可以在不接触服务本身的情况下对服务进行猴子补丁,以包装、模拟或以其他方式转换服务中的某些方法 在我的例子中,我试图查看$http,以获取大于某个大小的get请求,当超过该大小时,将请求分解为多个请求 要实际获取$http,请执行以下操作:Javascript 如何使用服务装饰器查看$http.get中变量的值,javascript,angularjs,Javascript,Angularjs,使用AngularJS$provide decorators,可以在不接触服务本身的情况下对服务进行猴子补丁,以包装、模拟或以其他方式转换服务中的某些方法 在我的例子中,我试图查看$http,以获取大于某个大小的get请求,当超过该大小时,将请求分解为多个请求 要实际获取$http,请执行以下操作: ... $provide.decorator('$http', function($delegate) { Object.size = function(obj) { var
...
$provide.decorator('$http', function($delegate) {
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
// monkey patching $http to break into multiple requests on the API, when 4096 KB are exceeded.
var originalGet = $delegate.get;
$delegate.get = function(args) {
console.log("Get is called: ");
console.log(args);
//Can I view/manipulate/spy on $https own variables from here?
return originalGet.apply(this, arguments);
};
return $delegate;
});
我相信我应该能够监视该函数的内部工作,但不确定如何进行 您所说的“获取大于某个大小的请求”是什么意思?我在IIS服务器上接收到由于发送太大、包含太多信息的get请求而超出请求限制的错误。我试图通过观察http正在做什么,将这些请求分成更易于管理的块,当请求太大时,改为发送两个请求。改为在请求上使用错误处理程序。你是这样说的吗。错误(函数(数据、状态、标题、配置){//Handler在此处分解请求?});--我应该有一个分解请求的函数?从这一点上,我能告诉你,根据请求的大小,它被拒绝了吗?是的,那会更好。你当然可以使用装饰,但这是为了应用程序中的每个请求都需要发生的事情,我看不出这有什么意义。