根据AngularJS doc,调用$http返回以下内容:
使用标准then方法和两个http特定方法返回promise对象:success和error.所述然后方法有两个参数一成功以及错误回调将与响应对象被调用.的成功和错误的方法采取一个参数-一当请求成功或失败分别将被调用的函数.传递给这些函数的参数是传递给then方法的响应对象的析构表示.
除了response在一种情况下对象被解构的事实之外,我没有区别
promise.thenpromise.success/ promise.error方法的参数传递有没有?这两种不同方式通过看似相同的回调有什么意义?
有没有办法返回一个模仿调用的HttpPromise(或类似的东西)$http?我想设置一个全局变量,指示是否发出了真正的HTTP请求,或者是否使用伪数据返回了假的HttpPromise对象.
例如,我有一个与此类似的服务:
angular
.module('myservice')
.factory('MyService', ['$http', function($http) {
return {
get : function(itemId) {
if (isInTestingMode) {
// return a promise obj that returns success and fake data
}
return $http.get("/myapp/items/" + itemId);
}
};
} ]);
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我调用上述类似于此的服务:
// Somewhere in my controller
MyService.get($scope.itemId)
.success(function(data) {
$scope.item = data;
})
.error(function(data, status, headers, config) {
$scope.notFound = true;
});
Run Code Online (Sandbox Code Playgroud)
我试图不改变控制器代码; 在我的"isInTestMode"中,我希望success和error链接仍然有效.是否有可能以HttpPromise我在服务中描述的方式伪造一个?
下面是上面的"MyService"修订版(一个片段),其中包含一个success和error在promise对象上.但是,我该如何执行该success方法?
return { …Run Code Online (Sandbox Code Playgroud) 我试图用angularjs为我的服务器响应(PARSE)实现一个拦截器,我看到这个项目使用$ httpProvider来注册拦截器.
既然我的服务没有使用$ http服务(正在使用PARSE),有没有办法以与项目样本相同的清洁方式实现我的拦截器?