and*_*nka 2 javascript angularjs
有相关问题,有关业务处理$ HTTP,但我想稍微详细说明.我希望我的控制器能够使用类似于Angular $ http API的API执行服务调用:
$scope.login = function(user) {
securityService.login(user).success(function(data) {
$scope.data = data;
}).error(function(data) {
$scope.error = data;
});
};
Run Code Online (Sandbox Code Playgroud)
这是一个很好的可读API.从表面上看,我在服务API中需要做的就是:
return {
name : 'User Service',
login : function(user) {
return $http.post("/api/login", user);
}
};
Run Code Online (Sandbox Code Playgroud)
太棒了,它回报了承诺success和error消息随之而来.但是......如果我想处理服务中的成功和失败案例怎么办?我想维护漂亮,可读的服务API.在这种情况下,也许我想保留用户,以便我可以公开像securityService.currentUser()`securityService.isLoggedIn()'这样的方法.
我尝试了$http.post().then(...)promise API,但那些返回整个HTTP响应.同样,我想将HTTP与服务隔离开来,并维护一个类似的具体回调API.
你可以在login使用angular的时候做出自己的承诺$q:
var deferred = $q.defer(),
promise = deferred.promise;
$http.post("/api/login", user).success(...).error(...)
return promise;
Run Code Online (Sandbox Code Playgroud)
在服务中$ http承诺的成功/失败中,解析/拒绝您的延迟对象.
编辑:
扩展到$http.post:
$http.post("/api/login", user).success(function(data) {
if (data == "foo") { // success case?
deferred.resolve('you logged in!');
} else {
deferred.reject('something really bad happened!');
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |