如何在一个页面使多个setInterval函数正常运行,前端开发JS中使用常用的
关于【如何在一个页面使多个setInterval函数正常运行】,今天犇犇小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
1、如何在一个页面使多个setInterval函数正常运行
如何在一个页面使多个setInterval函数正常运行
问题:当一个页面同时有两个setInterval函数调用的冲突如何解决?解决方法:定义两个变量 并把 setInterval 赋值给变量var a = setInterval(function(){ ------ code ------},1000)var b = setInterval(function(){ ------ code ------},1000)清除clearInterval(a)clearInterval(b)举例:注:setInterval()方法会不停地调用函数,直到用clearInterval()终止定时或窗口被关闭。window.clearInterval()功能:取消由setInterval()方法设置的定时器。
我有两个JS函数需要自动定时循环执行,setInterval在一个页面上不能出现两次调用怎么办?
javascript中setInterval的用法
2、前端开发JS中使用常用的 setTimeout 实现 setInterval?怎么模拟
参考分析
setInterval 的作用是每隔一段指定时间执行一个函数,但是这个执行不是真的到了时间立即执行,它真正的作用是每隔一段时间将事件加入事件队列中去,只有当当前的执行栈为空的时候,才能去从事件队列中取出事件执行。所以可能会出现这样的情况,就是当前执行栈执行的时间很长,导致事件队列里边积累多个定时器加入的事件,当执行栈结束的时候,这些事件会依次执行,因此就不能到间隔一段时间执行的效果。
针对 setInterval 的这个缺点,我们可以使用 setTimeout 递归调用来模拟 setInterval,这样我们就确保了只有一个事件结束了,我们才会触发下一个定时器事件,这样解决了 setInterval 的问题。
参考实现
思路是使用递归函数,不断地去执行 setTimeout 从而达到 setInterval 的效果
- 简单实现
function mySetInterval(fn, timeout) { function interval() { fn(); setTimeout(interval, timeout); } setTimeout(interval, timeout);}
- 还可以加个控制器,控制是否继续执行
function mySetInterval(fn, timeout) { // 控制器,控制定时器是否继续执行 var timer = { flag: true, }; // 设置递归函数,模拟定时器执行。 function interval() { if (timer.flag) { fn(); setTimeout(interval, timeout); } } // 启动定时器 setTimeout(interval, timeout); // 返回控制器 return timer;}
这就是关于《如何在一个页面使多个setInterval函数正常运行,前端开发JS中使用常用的》的所有内容,希望对您能有所帮助!更多的知识请继续关注《犇涌向乾》百科知识网站:http://www.029ztxx.com!
版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。