setTimeout不使用angular2 typescript

时间:2017-05-24 22:29:47

标签: angular typescript settimeout

这是我检查页面是否空闲的html代码。如果它闲置一段时间我需要抛出不活动警报并注销用户。

<div *ngIf="environmentData" xmlns="http://java.sun.com/jsf/html" (load)="startTimers()" (mousemove)="resetTimers()" (keypress)="resetTimers()">

函数在typescript组件中定义如下:timoutNow变量设置为10分钟。但是每次鼠标移动或按下一个键时,屏幕都会弹出警报。为什么不等待我在显示警报之前设置的时间?

// Start timers.
  startTimers() {
    console.log("inside start timers method");
    console.log("time out number is "+this.timoutNow);
    this.timeoutTimer = setTimeout(this.showTimeout(), this.timoutNow);
    // window.location.href = this.environmentData.logoutUrl;
  }

  showTimeout(){
    console.log("inside show timeout");
    bootbox.alert("You are being timed out due to inactivity!");
  }

  // Reset timers.
  resetTimers() {
    console.log("inside reset timers method");
    clearTimeout(this.timeoutTimer);
    this.startTimers();
  }

1 个答案:

答案 0 :(得分:6)

应该是

this.timeoutTimer = setTimeout(this.showTimeout, <arg2>);  // correct

而不是

this.timeoutTimer = setTimeout(this.showTimeout(), <arg2>);  // wrong

因为在后者中,您正在立即调用回调函数而不是传递引用。