Как setTimeout не будет повторяться при перезагрузке в Angular - PullRequest
0 голосов
/ 20 июня 2020

У меня есть некоторые данные и код их обработки следующим образом:

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() отобразит самые новые данные.

Ответы [ 2 ]

2 голосов
/ 20 июня 2020

Есть много способов сделать то же самое, например: 1) Использование localstorage, 2) sessionstorage 3) класс обслуживания

localstorage

Сохранить в 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 будет сохранять данные как строку и извлекать как строку. Вам необходимо проанализировать желаемый результат, если значение является объектом, хранящимся в виде строки. например, parseInt (localStorage.getItem ('ключ'));

1 голос
/ 20 июня 2020

Когда вы перезагружаете приложение, все ваши переменные и стек повторно инициализируются. Таким образом, невозможно отследить, посетил ли пользователь первый раз только что перезагрузка приложения.

Вы можете сохранить какое-то значение в своей базе данных для отслеживания или использовать localstorage или хранилище сеансов .

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

Когда пользователь посещает страницу во второй раз, вы просто проверяете значение переменной, хранящейся в сервисе.

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