首页 > 解决方案 > 如果发生,每小时仅显示一次警报

问题描述

我不知道我哪里出错了,但我很难实施。基本上,任何原因都可能发生错误,但我只想在十五分钟内提醒该消息一次。因此,例如,如果它发生在上午 7:02,我会显示警报。如果有错误,在上午 7:10,我不显示。但是如果它在 8:02 之后显示,我会再次显示它,然后循环继续。

现在,无论我做什么,它都会提醒消息。

  lastTimeErrorWasDisplayed = 0;
  displayError() {

    let vm : any = this;

    // get the current time
    const timeNow = new Date().getTime();

    const hoursToWaitBeforeNextToastr = 1;

    const difference = timeNow  - this.lastTimeErrorWasDisplayed
    var hours = (difference / (1000 * 60 * 60));
    // show we show toastr now?
    if (
      hours > hoursToWaitBeforeNextToastr
    ) {
      this.lastTimeErrorWasDisplayed = timeNow;

      setTimeout(() => {
        vm.toastr.warning(
         "error",""
        );
      });


    }
  }

由于应用程序要求, setTimeOut 是必要的,但即使没有它,它仍然会显示错误,无论何时发生以及上次显示的时间。

标签: angulartypescript

解决方案


尝试这个:

var startTime = new Date('2019/06/30 16:00');
var timeNow = new Date();
var difference = timeNow.getTime() - startTime.getTime();
var resultInMinutes = Math.round(difference / 60000);

if (resultInMinutes >= 15) {
 // your code
}

如果您想每小时检查一次,也可以将 if-condition 更改为 60。


推荐阅读