在Angular中,如何安全地强制浏览器刷新而又防止其循环?

时间:2019-03-07 13:57:33

标签: javascript angular

我有一个版本化的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);
        }
    }
}

强制刷新防止循环的最安全方法是什么?

0 个答案:

没有答案