クライアント側で計算するハッシュを必要とする API からいくつかの情報を取得する必要がありますが、完了するまでにかなりの時間がかかります。角度サイクルと同期できませんでした。できることは、タイムアウトを設定してハッシュを計算することでしたが、現在はハッシュを取得して情報を取得していますが、角度サイクルが壊れているため、使用できますそれ。
私たちは角度 (1.0.7) を使用したばかりで、何かが足りないことを知っています。
いくつかの明らかな部分を省略してコードを更新してください。そうでない場合はお知らせください。
https://code.google.com/p/javascript-bcrypt/と依存関係が適切に読み込まれるため、ハッシュを計算するサービスを作成しました (もう 1 つ、これはハッシュが 1 回だけ計算されるために必要です)。
.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 :(
}
])