在JS脚本中,多个setInterval之间会出现干扰!大概原因是由于从上到下的执行顺序,导致不能同时执行!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JS脚本中,多个setInterval之间会出现干扰!大概原因是由于从上到下的执行顺序,导致不能同时执行!相关的知识,希望对你有一定的参考价值。
哪位大神有解决方案啊!
js是单线程执行,setInterval是定时执行,从设定setInterval的时候,它的执行时间就定了,如果到时间了,碰巧线程被占了,那么此次setInterval的东东就被抛弃了,下次会继续执行,你可以试试 setTimeout 参考技术A 不能同时执行是肯定的,必然有一个先后次序,但是可以几乎是同时运行。如果你确定是互扰的问题,可以只定义一个setInterval,例如
var timeIntervalNumber = 1;
var timeInterval = setInterval('doSomething()', 1000);
function doSomething()
if (timeIntervalNumber % 2) ...
if (timeIntervalNumber % 5) ...
timeIntervalNumber ++;
if (timeIntervalNumber >= 2 * 5)
timeIntervalNumber = 1;
追问
貌似不行!
参考技术B 代码拿出来看一下jsp中setInterval方法页面关闭后还会执行吗
setInterval方法页面关闭后还会执行吗
不会继续执行的,这个方法是页面脚本,不属于浏览器事件的,也就是说页面都没有的情况下,脚本无法执行的。setInterval就是定义的加载页面完成的一个定时器:
var timer = null;
window.onload = function()
timer = setInterval("5000");
;
function destroy()
if(!!timer)
clearInterval(timer);
timer = null;
参考技术A javascript代码都是在客户端执行的,也就是浏览器内。当浏览器关闭后,方法就不执行了。
就像你电脑关机了,里面的程序也运行不了了。追问
那如果在页面有个方法要定时执行要怎么实现
参考技术B 不会饿,页面脚本,页面都没了当然没了。追问问题是这样的:页面中的定时器绑定了个方法,该方法是到后台请求数据。在未打开该页面的情况下,控制台显示着页面与后台定时的交互着。因此,我没弄明白,为什么页面关闭着,居然还会和后台程序交互。
追答setInterval本身不可能永久影响到后台逻辑,否则再好的服务器也撑不住。
如果确定包含setInterval的页面已经关闭但控制台还有输出
1确认输出是否是来自于setInterval关联的方法中
2确认是否有服务器端的定时器类的代码或者线程未关闭或停止
以上是关于在JS脚本中,多个setInterval之间会出现干扰!大概原因是由于从上到下的执行顺序,导致不能同时执行!的主要内容,如果未能解决你的问题,请参考以下文章