js实时刷新数据(注:不是一段时间刷新一次,而是按照时间点进行刷新)

时间:2022-12-20 15:53:06
js实时刷新数据(注:不是一段时间刷新一次,而是按照时间点进行刷新)
网上找了好多,都是按照时间段进行刷新数据

9 个解决方案

#1


按照时间点进行刷新 和一段时间刷新 本质上不是一个意思?
在js上做轮询 肯定是 设置间隔时间执行。
循环执行:var timeid = window.setInterval(“方法名或方法”,“延时”);window.clearInterval(timeid); 
定时执行:var tmid = window.setTimeout(“方法名或方法”, “延时”);window.clearTimeout(tmid); 
本质都是一样的。

#2


引用 1 楼 bobolnear 的回复:
按照时间点进行刷新 和一段时间刷新 本质上不是一个意思?
在js上做轮询 肯定是 设置间隔时间执行。
循环执行:var timeid = window.setInterval(“方法名或方法”,“延时”);window.clearInterval(timeid); 
定时执行:var tmid = window.setTimeout(“方法名或方法”, “延时”);window.clearTimeout(tmid); 
本质都是一样的。


我想要的效果并不是你说的这样
我举一个例子:
比若说我每天的早上八点准时刷新一次中午十二点在刷新一次,并不是隔一段时间刷新一次

还是很感谢你能回复帖子

#3


要刷新什么数据???看能不能使用quartz或者spring的scheduled

#4


js的话还是用setInterval或者setTimeout去调方法,只是在方法一开始就判断时间

#5


低级一点的做法就是js轮询,就是setInterval或setTimeout方法;
稍微优化过后的就是建立长连接,资源相对来说利用率会大点;
再者就是利用服务器推技术,由后端自动任务执行,然后主动让前台相应,从而刷新页面(dwr3 、goeasy等技术)。

#6


引用 5 楼 syqh13 的回复:
低级一点的做法就是js轮询,就是setInterval或setTimeout方法;
稍微优化过后的就是建立长连接,资源相对来说利用率会大点;
再者就是利用服务器推技术,由后端自动任务执行,然后主动让前台相应,从而刷新页面(dwr3 、goeasy等技术)。


没用过也没听过你说的dwr3 、goeasy等技术 js实时刷新数据(注:不是一段时间刷新一次,而是按照时间点进行刷新)
所以只能曲线救国,用js轮训判断时间进行刷新数据
非常感谢

#7


引用 2 楼 u012248761 的回复:
Quote: 引用 1 楼 bobolnear 的回复:

按照时间点进行刷新 和一段时间刷新 本质上不是一个意思?
在js上做轮询 肯定是 设置间隔时间执行。
循环执行:var timeid = window.setInterval(“方法名或方法”,“延时”);window.clearInterval(timeid); 
定时执行:var tmid = window.setTimeout(“方法名或方法”, “延时”);window.clearTimeout(tmid); 
本质都是一样的。


我想要的效果并不是你说的这样
我举一个例子:
比若说我每天的早上八点准时刷新一次中午十二点在刷新一次,并不是隔一段时间刷新一次

还是很感谢你能回复帖子


你的问题可以理解为:
1.你有一个js页面长期面对客户。
2.这个js页面需要每天的早上八点准时刷新一次中午十二点在刷新一次。

那么你有几个点需要先思考如何设计。
1.浏览器是无状态的,服务端不能直接推送消息给客户端。
2.如果建立长链接,性能消耗大。
3.无论你说的是每天的早上八点准时刷新一次中午十二点在刷新一次,都是定时。
区别只是 在 客户端定时,还是在服务端定时。
4.客户端定时明显 你用js只有我提到的这两种,其他js包只是封装而已。
如果是服务端定时,那么你需要解决服务端通知客户端刷新的问题。

综上 
1.如果你的刷新数据较少,并且一天就看那么 一两次,可以考虑在客户端进行js轮询。(为防止客户端轮询崩溃,
可以参考微信浏览器二维码登陆轮询设计,想知道怎么设计的,打开微信浏览器二维码页面看看就知道了。)
2.如果你的数据较多,并且频繁,不建议客户端轮询,可以考虑服务端设置定时,然后通过长链接通知客户端刷新。

#8


用setInterval 定时器 ,页面打开时即启动定时器,然后js获取系统当前时间 ,判断当前时间是不是等于你设置的时间点, 如果当前时间等于你设置的时间点就发送请求

#9


js实时刷新数据(注:不是一段时间刷新一次,而是按照时间点进行刷新)解决了吗?

#1


按照时间点进行刷新 和一段时间刷新 本质上不是一个意思?
在js上做轮询 肯定是 设置间隔时间执行。
循环执行:var timeid = window.setInterval(“方法名或方法”,“延时”);window.clearInterval(timeid); 
定时执行:var tmid = window.setTimeout(“方法名或方法”, “延时”);window.clearTimeout(tmid); 
本质都是一样的。

#2


引用 1 楼 bobolnear 的回复:
按照时间点进行刷新 和一段时间刷新 本质上不是一个意思?
在js上做轮询 肯定是 设置间隔时间执行。
循环执行:var timeid = window.setInterval(“方法名或方法”,“延时”);window.clearInterval(timeid); 
定时执行:var tmid = window.setTimeout(“方法名或方法”, “延时”);window.clearTimeout(tmid); 
本质都是一样的。


我想要的效果并不是你说的这样
我举一个例子:
比若说我每天的早上八点准时刷新一次中午十二点在刷新一次,并不是隔一段时间刷新一次

还是很感谢你能回复帖子

#3


要刷新什么数据???看能不能使用quartz或者spring的scheduled

#4


js的话还是用setInterval或者setTimeout去调方法,只是在方法一开始就判断时间

#5


低级一点的做法就是js轮询,就是setInterval或setTimeout方法;
稍微优化过后的就是建立长连接,资源相对来说利用率会大点;
再者就是利用服务器推技术,由后端自动任务执行,然后主动让前台相应,从而刷新页面(dwr3 、goeasy等技术)。

#6


引用 5 楼 syqh13 的回复:
低级一点的做法就是js轮询,就是setInterval或setTimeout方法;
稍微优化过后的就是建立长连接,资源相对来说利用率会大点;
再者就是利用服务器推技术,由后端自动任务执行,然后主动让前台相应,从而刷新页面(dwr3 、goeasy等技术)。


没用过也没听过你说的dwr3 、goeasy等技术 js实时刷新数据(注:不是一段时间刷新一次,而是按照时间点进行刷新)
所以只能曲线救国,用js轮训判断时间进行刷新数据
非常感谢

#7


引用 2 楼 u012248761 的回复:
Quote: 引用 1 楼 bobolnear 的回复:

按照时间点进行刷新 和一段时间刷新 本质上不是一个意思?
在js上做轮询 肯定是 设置间隔时间执行。
循环执行:var timeid = window.setInterval(“方法名或方法”,“延时”);window.clearInterval(timeid); 
定时执行:var tmid = window.setTimeout(“方法名或方法”, “延时”);window.clearTimeout(tmid); 
本质都是一样的。


我想要的效果并不是你说的这样
我举一个例子:
比若说我每天的早上八点准时刷新一次中午十二点在刷新一次,并不是隔一段时间刷新一次

还是很感谢你能回复帖子


你的问题可以理解为:
1.你有一个js页面长期面对客户。
2.这个js页面需要每天的早上八点准时刷新一次中午十二点在刷新一次。

那么你有几个点需要先思考如何设计。
1.浏览器是无状态的,服务端不能直接推送消息给客户端。
2.如果建立长链接,性能消耗大。
3.无论你说的是每天的早上八点准时刷新一次中午十二点在刷新一次,都是定时。
区别只是 在 客户端定时,还是在服务端定时。
4.客户端定时明显 你用js只有我提到的这两种,其他js包只是封装而已。
如果是服务端定时,那么你需要解决服务端通知客户端刷新的问题。

综上 
1.如果你的刷新数据较少,并且一天就看那么 一两次,可以考虑在客户端进行js轮询。(为防止客户端轮询崩溃,
可以参考微信浏览器二维码登陆轮询设计,想知道怎么设计的,打开微信浏览器二维码页面看看就知道了。)
2.如果你的数据较多,并且频繁,不建议客户端轮询,可以考虑服务端设置定时,然后通过长链接通知客户端刷新。

#8


用setInterval 定时器 ,页面打开时即启动定时器,然后js获取系统当前时间 ,判断当前时间是不是等于你设置的时间点, 如果当前时间等于你设置的时间点就发送请求

#9


js实时刷新数据(注:不是一段时间刷新一次,而是按照时间点进行刷新)解决了吗?