В Angular, как я могу безопасно принудительно обновить браузер, но не допустить его зацикливания? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть приложение Angular, которое является версионным. Иногда пользователь получает поточный файл index.html, который соответствует старой версии приложения, что приводит к ошибкам при попытке загрузить другие фрагменты javascript, css и т. Д.

Поскольку я записываю каждый номер версии, я думал сравнить его с последним номером версии при запуске приложения, чтобы, если они не совпадают (у пользователя более старая версия), я принудительно обновляю пользователь получит последнюю версию.

Однако я боюсь, что это выйдет из-под контроля и в некоторых случаях приведет к обновлению цикла, если что-то пойдет не так. Я думал о том, чтобы сохранить переменную в локальном хранилище, указав, что она уже пыталась обновить, а не пытаться снова.

async checkVersion() {
  if (isPlatformBrowser(this.platformId)) {
    try {
        const json = await this.http.get(`${environment.domain}/assets/version.json?${new Date(Date.now()).getTime()}`).map(res => res.json()).share().toPromise();

        const latestVersion = json.version;
        const currentVersion = environment.version;

        this.localStorageService.setItem('currentVersion', currentVersion);
            if (latestVersion !== currentVersion) {
                // Safely refresh
            }
        } catch (e) {
            console.error(e);
        }
    }
}

Какой самый безопасный способ форсировать обновление и , предотвращая петлю ?

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