在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之间会出现干扰!大概原因是由于从上到下的执行顺序,导致不能同时执行!的主要内容,如果未能解决你的问题,请参考以下文章

js事件队列

js事件队列

(转)如何实现同一浏览器多个标签页之间的通信——cookie+setInterval

js中能不能开启两个window.setInterval

js中怎么让程序暂停一段时间

js 中 setInterval的执行次数问题