如何在控制器上获取 $q promise 值
how to get the $q promise value on controller
我正在使用 angularJS 中的 $q
来获得承诺。
我会检查控制器中的承诺值以执行某些操作。
但我不知道如何得到它来比较它。
这是我在工厂方法中的做法:
AuthService.getActifUser = function () {
var deferred = $q.defer();
cognitoUser = userPool.getCurrentUser();
if (cognitoUser) {
cognitoUser.getSession(function(err, session) {
if (err) {
alert(err);
deferred.reject('failed to login');
} else {
deferred.resolve('logged in');
}
});
} else {
deferred.reject('not logged in');
}
return deferred.promise;
};
这就是我尝试在我的控制器中获取它的方式:
var res = AuthService.getActifUser();
console.log(res);
if (res != 'logged in') {
console.log(res);
routeService.goToView('/pages/login')
}
res
的日志告诉我:
Object { $$state: Object }
有人知道怎么做吗?
Object { $$state: Object }
显示因为你当时你的承诺仍然是 resolving.in 控制器像这样抓住承诺
AuthService.getActifUser().then(function(data){
var res = data
console.log(res);
if (res != 'logged in') {
console.log(res);
routeService.goToView('/pages/login')
}
});
res 是一个 promise,应该解决才能获取数据。
您正在记录的状态对象是 promise
对象的状态。
res.then(function(resp){
//succesful response
})
.catch(function(err){
//exception happened
})
你不需要用 if 语句检查 res 你可以这样检查:
var res = AuthService.getActifUser();
res.then(function (response) {
console.log("logged successfully");
}, function (response) {
routeService.goToView('/pages/login')
});
第一个函数成功结果第二个失败,angular 将自动识别结果
我正在使用 angularJS 中的 $q
来获得承诺。
我会检查控制器中的承诺值以执行某些操作。
但我不知道如何得到它来比较它。
这是我在工厂方法中的做法:
AuthService.getActifUser = function () {
var deferred = $q.defer();
cognitoUser = userPool.getCurrentUser();
if (cognitoUser) {
cognitoUser.getSession(function(err, session) {
if (err) {
alert(err);
deferred.reject('failed to login');
} else {
deferred.resolve('logged in');
}
});
} else {
deferred.reject('not logged in');
}
return deferred.promise;
};
这就是我尝试在我的控制器中获取它的方式:
var res = AuthService.getActifUser();
console.log(res);
if (res != 'logged in') {
console.log(res);
routeService.goToView('/pages/login')
}
res
的日志告诉我:
Object { $$state: Object }
有人知道怎么做吗?
Object { $$state: Object }
显示因为你当时你的承诺仍然是 resolving.in 控制器像这样抓住承诺
AuthService.getActifUser().then(function(data){
var res = data
console.log(res);
if (res != 'logged in') {
console.log(res);
routeService.goToView('/pages/login')
}
});
res 是一个 promise,应该解决才能获取数据。
您正在记录的状态对象是 promise
对象的状态。
res.then(function(resp){
//succesful response
})
.catch(function(err){
//exception happened
})
你不需要用 if 语句检查 res 你可以这样检查:
var res = AuthService.getActifUser();
res.then(function (response) {
console.log("logged successfully");
}, function (response) {
routeService.goToView('/pages/login')
});
第一个函数成功结果第二个失败,angular 将自动识别结果