javascript - 需要设置超时需要在 if else 条件中进行以下更改
问题描述
ngonit()
{
this.timeout();
}
//timer
timer:any;
time() {
this.timer = setTimeout(() => {
console.log(this.timer);
this.openDialog();
}, 10000)
console.log(this.timer);
}
timeout() {
document.addEventListener('keypress', () => {
clearTimeout(this.timer);
this.time();
});
document.addEventListener('click', () => {
clearTimeout(this.timer);
this.time();
});
document.addEventListener('mousemove', () => {
clearTimeout(this.timer);
this.time();
})
}
如果用户在 6 秒内未访问该页面,我们需要提醒用户您已注销。所以我想在用户在 if 条件下空闲 5 秒时显示弹出(警告)消息,否则如果我需要显示另一个弹出窗口 1 秒,如果用户未访问该页面,则您已注销。所以完全在 6 秒后我们需要向用户显示第二条弹出消息已注销。我返回的以下代码仅在用户空闲 5 秒时显示弹出窗口。您可以编辑它吗?
解决方案
开始var timer:any;
在 javascript 中无效;
您的计时器需要设置5000
为 5 秒,然后在其中始终清除计时器(以避免多次单击调用相同的函数),当计时器达到 5 秒时,启动另一个 1000 毫秒的计时器,这将调用该out()
函数。
在里面out()
你不需要每次都在文档中添加一个监听器,只需使用一个布尔值来检查它是否已经添加。一次添加监听器就足够了。
此外,由于session()
是一个函数,要从一开始就开始,您必须至少调用该函数一次。
var timer;
var listenersAdded = false;
function session() {
clearTimeout(this.timer)
this.timer = setTimeout(() => {
console.log("please access the page ur going to logout in 1 seconds");
this.timer = setTimeout(() => out(), 1000)
}, 5000)
}
function out() {
console.log("logged out");
if (listenersAdded != true){
listenersAdded = true
document.addEventListener('keypress', session);
document.addEventListener('click', session);
}
}
session()
但是您知道,几乎不可能在不到一秒钟的时间内阅读有关注销的消息并执行某些操作,对吧?
推荐阅读
- amazon-web-services - 如何将 aws 凭证密钥传递给 KinesisProducerConfiguration 以在 Java 中创建 kinesis 生产者
- javascript - 当表单具有数据类型为“文本”的复选框和锚标记时如何添加验证
- amazon-web-services - Cloudwatch 用于基于使用 cloudwatch 指标的每日计费警报
- java - Java 验证方法并根据输入参数返回消息
- node.js - 谷歌云函数用40+函数写配额问题
- python - 如何高效地使用 Google Colab?
- node.js - 获取时获取json值作为key
- visual-studio - Xamarin.Forms Android 项目在 VS2019 中丢失了所有引用
- javascript - 如何删除d3中分组条形图中条形之间的空格
- css - Sass 变量中的 CSS 变量