我们必须从需要我们在客户端计算的哈希的 API 中检索一些信息,但需要相当长的时间才能完成。我们无法与角循环同步,我们能做的最多就是设置一个超时来计算散列,但是虽然我们现在得到了散列并获得了信息,但这打破了角循环,我们可以使用它。
我们对 angular (1.0.7) 很陌生,我们知道我们遗漏了一些东西,任何关于这个问题的帮助都会得到解决
更新一个省略一些明显部分的代码,我想,如果不是这样,请告诉我。
https://code.google.com/p/javascript-bcrypt/并且依赖项已正确加载,因此我们创建了一个计算哈希的服务(还有一件事,需要只计算一次哈希)
.service('hashSrv', function(SALT, $q, $timeout) {
var bcrypt, token = '', secure = '', deferred = $q.defer();
bcrypt = new bCrypt();
token = Base64.encode("Sometoken");
return {
generate: function() {
bcrypt.hashpw(token, SALT, function(hash) {
secure = hash;
});
},
getSecure: function() {
return secure;
},
getToken: function() {
return token;
},
getData: function() {
return {
'token': token,
'secure': secure
}
}
}
})
这是我们的工厂资源:
.factory('InfoSrv', function ($http, RESOURCE_URL, HashSrv, $timeout) {
return $timeout( function() {
$http({method: 'GET', url: 'RESOURCE_URL?token=' + HashSrv.getToken() + '&secure=' + HashSrv.getSecure()})
.success(function(response, data, status, headers, config) {
//Here we have the correct response
})
.error(function(response, data, status, headers, config) {
//Check if something bad happens
});
}, 200);
})
最后,我们试图在我们的控制器中使用它
.controller('DataCtrl',
['$scope', 'InfoSrv',
function ($scope, InfoSrv) {
$scope.user.basicInformation = $scope.getBasicInfo();
//Here we can get the info :(
}
])