私はユーザーサービスを持っています。私が構築した別のサービスを利用する方法を作りたいと思います。このサービスには2つの方法があります。 getUser()
およびgetCurrentUser()
。 getCurrentUser()
は、UIDを取得する注入サービスを利用します。返されたUIDを使用してgetUser()
メソッドを実行します。私の問題は、getCurrentUser()
に2番目のティア約束を返すことができないということです。AngularJS:内部からの約束を返す?
この質問は説明するのが少し難しいです。
self.getCurrentUser = function() {
return loginService.getCurrentUid().then(function(response) {
if (response.data === 'false') {
alertBoxService.trigger($rootScope.unexpectedApiResponse);
return $q.reject(response); // convert into a rejection
}
return self.getUser(response.data); // chain the promise resolution
}, function(response) {
alertBoxService.trigger($rootScope.asyncFailed);
return $q.reject(response); // chain the rejections
});
}
あなたはもちろんの$q
サービスを注入する必要があります...ここで
svs.service("usersService", function($rootScope, $http, loginService, alertBoxService) {
var self = this;
self.getUser = function(identifier, column) {
if (typeof(column) === 'undefined') column = "uid";
return $http.get($rootScope.api + "/getUser/" + identifier + "/" + column);
}
self.getCurrentUser = function() {
var currentUserPromise;
loginService.getCurrentUid().then(
function(response) {
if (response.data === "false") {
alertBoxService.trigger($rootScope.unexpectedApiResponse);
} else {
console.log(self.getUser(response.data));
currentUserPromise = self.getUser(response.data);
}
}, function(response) {
alertBoxService.trigger($rootScope.asyncFailed);
}
);
return currentUserPromise;
}
});
[もちろん、](http://stackoverflow.com/q/23667086/1048572)。しかし、その変数はまったく必要ありません! – Bergi