我在IE中收到此错误:“ TypeError:对象不支持属性或方法'然后'”,在我的AngularJs控制器中调用的以下函数中:
GetUserAccessService.checkForValidHashPeriod()
.then(function (result) {
if (result === 'false') {
GetUserAccessService.returnUserHashAuthentication();
}
});
这是我的AngularJs服务中调用的GetUserAccessService.checkForValidHashPeriod
函数:
this.checkForValidHashPeriod = function () {
var result;
var now = new Date().getTime();
if ($sessionStorage.userAuthenticationTokenDate !== null && $sessionStorage.userAuthenticationTokenDate !== undefined) {
var timeDiff = now - $sessionStorage.userAuthenticationTokenDate;
}
if (angular.isUndefined($sessionStorage.userAuthenticationToken) || timeDiff > 1500000) {
result = false;
}
else {
result = true;
}
var stringResult = result.toString();
return stringResult;
};
使用.then
来电,我做错了什么?
答案 0 :(得分:1)
下面的函数调用必须更改,因为你的方法将返回一个字符串,不能在这里使用'then'
Var someString = GetUserAccessService.checkForValidHashPeriod()
if (someString === 'false') {
GetUserAccessService.returnUserHashAuthentication();
}
答案 1 :(得分:-1)
如果您打算在IE中使用promises,可以尝试使用bluebird lib来处理与旧浏览器的兼容性。
答案 2 :(得分:-1)
如果其他人有同样的问题,这里有一个替代答案(也就是说,这是我最终使用的方法),基于Phil的评论和帮助:
this.checkForValidHashPeriod = function () {
var result = $q.defer();
var now = new Date().getTime();
if ($sessionStorage.userAuthenticationTokenDate !== null && $sessionStorage.userAuthenticationTokenDate !== undefined) {
var timeDiff = now - $sessionStorage.userAuthenticationTokenDate;
}
if (angular.isUndefined($sessionStorage.userAuthenticationToken) || timeDiff > 1500000) {
result.resolve(false);
}
else {
console.log('Hash is valid.')
result.resolve(true);
}
return result.promise;
};
是的,我知道这可能是对promises
和$q
的不必要使用,但我喜欢这种方法,并与我的其余服务内联。