Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
334 views
in Technique[技术] by (71.8m points)

php - Call javascript function on every second ( nearly 1800 seconds ) setTimeout & setInterval having lagging issue

I want to show login popup before 1 minute of session timeout.Max session idle timeout value is 1800 seconds ( 30 mins. ) So I used one counter variable like idlecount. Using setInterval() I am incrementing that variable value. So now when variable value is 1740 ( i.e my idle session timeout value 1800 - 60 sec. ) then I will show login popup ( Having 2 buttons (1) Keep me sign in (2) Sign out ). The issue is that setInterval() not properly maintaing the value of variable idlecount. Due to that login popup not working properly.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You should not use a timeout or setinterval when you want to rely on real expiring time as them are not reliable. Also, notice that a refresh cancel the setTimeout/setInterval. Instead you should use a setInterval that check every x seconds if the session has expired checking it against current Date() object.

Example:

setInterval(function(){
  var decodedToken = localStorage.getItem('user_token');
  if (decodedToken.exp < new Date().getTime()/1000) {
    // Token is expired
  }
}, 3000);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...