Почему очищается остаток кода функции при запуске window.location.reload? - PullRequest
1 голос
/ 28 мая 2019

Я хочу начать подсчет текущего сеанса, когда пользователь вошел в систему. Поскольку я храню данные пользователя в sessionStorage, мне нужно выполнить location.reload, чтобы API-запросы могли получить доступ к токену в sessionStorage.Проблема заключается в том, что после перезагрузки оставшийся код в функции очищается или игнорируется.Я попытался войти в систему consol, и он показывает примерно полсекунды, после чего консоль очищается.Как получилось, и как я могу запустить функцию setTimeout и заставить ее работать?

loginUser: function(username, password) {
    var loginDetails = {"username": username, "password": password};
    return loginResource.save({}, loginDetails).$promise.then(function(response){
        var user = {
            name: username,
            token: response.token,
        }
        sessionStorage.user = angular.toJson(user);
        $window.location.reload();
    })
    .catch(function(reason) {
        console.warn("Failed login", reason);
        throw reason;
    });
},

beginCountdown: function() {
    console.log('begin');
    setTimeout(function(){
        sessionStorage.removeItem('user');
        $window.location.reload();
    }, 3000)
},

1 Ответ

2 голосов
/ 28 мая 2019

Поскольку я храню данные пользователя в sessionStorage, мне нужно выполнить location.reload, чтобы API-запросы могли получить доступ к токену в sessionStorage.

Это не так .

sessionStorage.setItem('key', 'value');
let data = sessionStorage.getItem('key');
console.log(data);

… показывает данные, сохраненные в строке 1 и извлеченные в строке 2.

после перезагрузки, оставшийся кодв функции очищается или игнорируется.

Страница - это среда, в которой работает ваш JavaScript.

Перезагрузка страницы эквивалентна перезагрузке компьютера и задается вопросом, почему Windowsприложение не поддерживает свое состояние. можно написать программу на JS, которая сохраняет свое состояние и перезагружает ее при повторном открытии, но, похоже, вы этого не делаете.

Не перезагружайте страницу,Решить реальную проблему.(Скорее всего, вы читаете данные из хранилища сеансов при загрузке программы JavaScript, а затем записываете только обновления в хранилище сеансов, а не в переменные, в которых вы храните копию этих данных, с которыми вы работаете.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...