繁体   English   中英

Angular reload时如何设置Timeout不重复

[英]How to setTimeout will not repeat when reload in Angular

我有一些数据及其处理代码如下:

LIST = [{
    "id": "1lqgDs6cZdWBL",
    "timeUpdated": "2020-04-22 12:51:23",
    "status": "CLOSED"
}, {
    "id": "C2Zl9JWfZHSJ",
    "timeUpdated": "2020-04-22 12:51:07",
    "status": "CLOSED"
}, {
    "id": "BHbiVcCaQa2d",
    "timeUpdated": "2020-04-15 14:53:12",
    "status": "CLOSED"
}];


ngOnInit() {
  this.initializeAlertTimer();
}
initializeAlertTimer(data?: any, duration?: any) {
  const DURATION = duration ? 20000 : 1000
  setTimeout(() => {
  }, DURATION)
}

addData() {
  const data = {
     "id": "qHFw59mujN9X",
     "timeCreated": "2020-03-06 12:21:06",
     "status": "NEW",
   }
   this.initializeAlertTimer(data, 20000);
}

我在这里尝试做的是,当打开应用程序时,它会从控制台列出所有数据LIST ,即使它会更改页面或重新加载它不应该重复的页面,并且在单击addData()时它会添加新数据然后通过initializeAlertTime()它将显示最新数据。

有很多方法可以做到这一点:1)使用本地存储,2)会话存储 3)服务 class

本地存储

保存到 LocalStorage:

localStorage.setItem('key', value);

对于具有属性的对象:

localStorage.setItem('key', JSON.stringify(object));

从本地存储中获取:

localStorage.getItem('key');

对于对象:

JSON.parse(localStorage.getItem('key'));

您可以使用这部分代码来获取剩余时间

localStorage.setItem('DURATION',DURATION)
    localStorage.setItem('start',Date.now()) // milliseconds
    

需要的时候

    const elapsed = Date.now() - localStorage.getItem('start');
    const remaining =  localStorage.setItem('DURATION') - elapsed; // divide by 1000 for seconds

注意:重新加载时将保留值 2)localStorage Object 将数据保存为字符串并检索为字符串。 如果值为 object 存储为字符串,则需要解析所需的 output。 例如 parseInt(localStorage.getItem('key'));

当您重新加载应用程序时,您的所有变量和堆栈都会重新初始化。 因此,无法跟踪用户是否在第一次重新加载应用程序时访问过。

您可以在数据库中存储一些值以跟踪或使用localstoragesession storage

如果您想在更改屏幕时进行跟踪,这可以通过使用服务和定义变量来实现。

当您用户第二次访问该页面时,您只需检查存储在服务中的变量的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM