这是我检查页面是否空闲的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();
}
答案 0 :(得分:6)
应该是
this.timeoutTimer = setTimeout(this.showTimeout, <arg2>); // correct
而不是
this.timeoutTimer = setTimeout(this.showTimeout(), <arg2>); // wrong
因为在后者中,您正在立即调用回调函数而不是传递引用。