Javascript 如何在不刷新页面的情况下更新会话存储数据?

Javascript 如何在不刷新页面的情况下更新会话存储数据?,javascript,angularjs,html,Javascript,Angularjs,Html,我正在创建SPA web应用程序,并使用SessionStorage在浏览器中存储当前用户信息。我用Chrome做测试。 在测试过程中,我发现当用户成功登录时,会话存储将在控制台中更新,但在刷新页面之前,我无法访问此附加值 我如何解决这个问题 这是我的angular服务,负责在sessionStorage中存储和检索currentUser: app.service("sessionStorageService", ["$window","$q", function ($window, $q) {

我正在创建SPA web应用程序,并使用SessionStorage在浏览器中存储当前用户信息。我用Chrome做测试。 在测试过程中,我发现当用户成功登录时,会话存储将在控制台中更新,但在刷新页面之前,我无法访问此附加值

我如何解决这个问题

这是我的angular服务,负责在sessionStorage中存储和检索currentUser:

app.service("sessionStorageService", ["$window","$q", function ($window, $q) {
var deferred = $q.defer();
this.setCurrentUser = function (user) {
    $window.sessionStorage["currentUser"] = JSON.stringify(user);
},
    this.getCurrentUser = function () {
        if ($window.sessionStorage["currentUser"]) {
            console.log("bega") ;
            deferred.resolve(JSON.parse($window.sessionStorage["currentUser"]));
            return deferred.promise;
        } else {
            console.log("bega1") ;
            deferred.reject("No Login User");
            return deferred.promise ;
        }
    };
}]))


此存储同时成功,但为了检索当前用户,我必须刷新页面。因为spa,我不可能:(

您的问题与您使用1个承诺($q.deffer)而不是每次通话都创建一个承诺有关

这里更新了您的服务(我使用$q.when在不创建新承诺的情况下返回值)

我更喜欢在sessionStorage上使用setItem和getItem方法


一个有效的JSFIDLE示例:

您的问题与您使用1个承诺($q.deffer)而不是在每次调用时创建一个承诺有关

这里更新了您的服务(我使用$q.when在不创建新承诺的情况下返回值)

我更喜欢在sessionStorage上使用setItem和getItem方法


一个正在工作的JSFIDLE示例:

你能发布你的代码吗?你能发布你的代码吗?你让我快乐:)你让我快乐:)
app.service('sessionStorageService', ['$window', '$q', function ($window, $q) {
    this.setCurrentUser = function (user) {
        $window.sessionStorage.setItem('currentUser', JSON.stringify(user));
    },
    this.getCurrentUser = function () {
        if ($window.sessionStorage.getItem('currentUser')) {
            return $q.when(JSON.parse($window.sessionStorage.getItem('currentUser')));
        } else {
            var deferred = $q.defer();
            deferred.reject('No Login User');
            return deferred.promise;
        }
    };
    this.clearCurrentUser = function () {
        $window.sessionStorage.removeItem('currentUser');
    };
}]);