我被困在为什么我的承诺不起作用。从我看过的其他文章中,我认为我正确地做到了。这是我目前的代码:
工厂代码
factory.isLoggedIn = function() {
$http.get('/api/v1/fitbit/auth')
.success((data) => {
return data.status;
})
.error((error) => {
console.log('Error: ' + error);
});
}
控制器代码
$scope.fitbitAuth = function() {
FitbitFactory.isLoggedIn()
.then(
function(data) {
$scope.fitbitStatus = data;
},
function(errorData) {
console.log(errorData);
});
return $scope.fitbitStatus;
};
根据我对承诺的理解,return $scope.fitbitStatus
应该填充$scope.fitbitAuth
,但它不是。我还在Factory中返回一个布尔值,它应填充$scope.fitbitStatus
。
答案 0 :(得分:2)
您必须Socket SOCK = SRVSOCKET.accept();
某事(承诺),或return
。
工厂代码:
undefined
控制器代码:
factory.isLoggedIn = function() {
return $http.get('/api/v1/fitbit/auth');
}
您工厂中的完整成功/错误块不是必需的,应该删除。我还不确定为什么你$scope.fitbitAuth = function() {
return FitbitFactory.isLoggedIn()
.then(
function(data) {
$scope.fitbitStatus = data;
},
function(errorData) {
console.log(errorData);
});
};
因为它在返回时未定义。
编辑:编辑答案以实际返回承诺。
答案 1 :(得分:1)
目前,您尚未从isLoggedIn
工厂方法返回任何内容,并且您正在调用.then
方法。
要使其正常工作,请返回$http
promise object from service method. In your case you could simply return
$ http.get method call which return promise object itself and then you can easily chain them up by calling
FitbitFactory.isLoggedIn()。then`
factory.isLoggedIn = function() {
return $http.get('/api/v1/fitbit/auth');
}