首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端轮询使用 setInterval 还是 setTimeout 好?

前端轮询使用 setInterval 和 setTimeout 都可以,但 setTimeout 更适合。

setInterval 可以在指定的时间间隔内重复执行代码,适合需要定期执行固定操作的场景。例如,定时刷新页面数据或滚动。

setTimeout 可以在指定的时间间隔后执行一次代码,适合需要执行一次特定操作的场。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Vue中 使用定时器 (setIntervalsetTimeout

大家,又见面了,我是你们的朋友全栈君。 js中定时器有两种,一个是循环执行 setInterval,另一个是定时执行 setTimeout。...循环执行( setInterval ) 顾名思义,循环执行就是设置一个时间间隔,每过一段时间都会循环执行这个方法,直到这个定时器被销毁掉; 语法: setInterval(code, milliseconds...eg: 开始的时候创建了一个定时器 setInterval ,时间间隔为2秒,每2秒都会调用一次函数 valChange,从而使 value 的值+1。...定时执行 ( setTimeout) 定时执行 setTimeout 是设置一个时间,等待时间到达的时候只执行一次,但是执行完以后定时器还在,只是不再运行; 语法: setTimeout(code,...eg: 开始时候创建一个定时器 setTimeout,只在2秒后执行一次方法。

5.9K11
  • 程序员做前端还是做后台

    如何选择前端还是后端选择的最大依据是兴趣爱好,如果喜欢研究一些底层的东西,想着探究一些问题的本质,如果具备这种性格适合做后台的开发,后台的研发开始阶段相对来讲入门难点,因为需要掌握一些框架,随着时间的推移越做越有感觉...,越是看似入门非常难反而容易做的非常。...所以如何选择还是根据自己的兴趣走,有了兴趣可能更加容易干的长久,毕竟兴趣是第一老师,现在很多程序员开始对于编程并不感兴趣,有的人做的时间长了慢慢积累成兴趣了,有的人做了很长时间还是咬牙顶着,不感兴趣想办法培养出兴趣来...,有了兴趣至于从事前端还是后台都不是多大的事情,做了几年程序之后再想切换到别的岗位也不是多大的事情,编程的套路大同小异。...当然也有很多程序员前后端都做的非常,这样在实现业务逻辑上占据非常大的优势,这样在内部任务划分上也会更加的合理化,如果觉得自己都能做没有必要划分的那么仔细,可以先以一个方向为切入点,然后慢慢渗透进去,特别是编程的入门阶段不要把自己的界限设置的那么清楚

    1.7K30

    JavaScript各种定时器总结

    setTimeoutsetInterval setTimeoutsetInterval已经存在已久了,我们什么场景下会使用它们完成我们的业务呢?...轮询接口这种情景,一般出现在不用socket的情况下使用的,例如我们有一个支付功能,前端调用了sdk获取h5支付链接后,页面就需要轮询一个后端的接口去查询这个订单的支付结果。...要求前端轮询,当然有人也会说为什么不直接一个请求,后端内部sleep这个请求直到有支付结果呢?sleep了这一个请求不就阻塞了一个进程吗?所以用这么low的方式请求是有原因的。...好了,言归正传,既然轮询前端就需要使用setTimeout了。而且一般来说,轮询不能无休止的轮询,中间必须要有停顿。不然你和刷接口有什么分别呢?...除此之外,requestAnimationFrame还有以下两个优势: 对CPU友好,如果使用setTimeout实现动画,那么页面如果不处于激活的状态,其实setTimeout还是会继续在后台执行的,

    64120

    Node.js 一问一答

    ')}); 2 浏览器和 Node.js 的 setInterval 有什么区别 在前端的时候,我们经常会轮询接口或定时去做一些事情,但是我们一般不使用 setInterval,因为浏览器中, setInterval...如果 JS 线程在运行一段耗时的代码,定时线程就会往 JS 线程里追加很多回调任务,导致耗时代码执行完后,大量回调被执行,比如短期内大量的轮询接口请求,这并不是我们预期的效果。...所以这种场景下一般使用 setTimeout 里调用 setTimeout 去模拟 setInterval。...server.address());}) 但是这种方式存在一个问题是在 cluster 模块下无法正常工作,比如我们希望在每一个进程里监听不同的随机端口,那么在子进程里执行 listen 的时候,不管是使用...cluster 的哪种模式都会导致多个进程监听同一个端口,解决方案就是使用 exclusive 标记。

    58310

    从一个超时程序的设计聊聊定时器的方方面面

    看一下setInterval使用语法: var timerId = setTimeout(func, miliseconds, args...); 第一个参数func是一个函数,可以是匿名函数,也可以是命名函数...在实际的项目开发中,经常会有接口轮询操作,即每隔一定时间向服务器发起一次查询操作。在这种场景中,setInterval就不合适了,取而代之的当是setTimeout。...但是,超时定时器的执行同样受到JS是单线程的限制,即使轮询代码是一样的,但不能保证其它地方在本次循环中没有新增的代码,所以使用setTimeout模拟的间隔定时器,仍然不能保证相待的间隔时间。...如果要求在每隔一个固定的时间间隔后就精确地执行某动作,那么最好使用setInterval,而如果不想由于连续调用产生互相干扰的问题,尤其是每次函数的调用需要繁重的计算以及很长的处理时间,那么最好使用setTimeout...换言之,如果间隔时间较长,使用setInterval基本没有问题;如果间隔时间较短,且上下可能存在数据依赖或资源竞争,当使用setTimeout。 下面的代码为什么在小游戏中不能运行?

    1.4K20

    # JavaScript 专题之 This 和定时器

    naotu.baidu.com/file/7d05ddb397c649f62136040993cbd04bopen in new window # 目的 分享日常开发工作中常遇到的问题 提升工作效率,编写易维护的代码 了解前端技术的趋势...# 定时器 setTimeout:规定 N 秒后执行 setInterval:规定 N 秒后循环执行 # 参数 函数/字符串、字符串会触发eval() 时长毫秒(ms) 传入函数的参数列表 传入函数 /.../ setTimeout / setInterval 使用 setTimeout( (...args) => { let sum = args.reduce((p, c) => p + c)...使用场景 视频学习的定时保存学时 扫码登录的轮询 # 问题 定时器不准确的原因 N 秒后推入执行栈,而不是 N 秒后执行 会因为前面有代码在执行而导致时间变短 案例代码: 假设有一个 HTTP 轮询,...使用场景:保存学时、人脸识别、考试倒计时等 多个页面栈共享定时器 # 解决方法 定时器不准确 解决方法:使用settimeout模拟setinterval // 自定义一个定时器 let timer

    16110

    为什么要用 setTimeout 模拟 setInterval

    最常见的出现的就是,当我们需要使用 ajax 轮询服务器是否有新数据时,必定会有一些人会使用 setInterval ,然而无论网络状况如何,它都会去一遍又一遍的发送请求,最后的间隔时间可能和原定的时间有很大的出入...综上所述,setInterval 有两个缺点: 使用 setInterval 时,某些间隔会被跳过; 可能多个定时器会连续执行; 可以这么理解:每个 setTimeout 产生的任务会直接 push 到任务队列中...还是一秒后立即输出 5 个 5 ?答案是:一秒后立即输出 5 个 5因为 for 循环了五次,所以 setTimeout 被 5 次添加到时间循环中,等待一秒后全部执行。...setTimeout 模拟 setInterval 综上所述,在某些情况下,setInterval 缺点是很明显的,为了解决这些弊端,可以使用 setTimeout() 代替。...(interv, wait); }; timer= setTimeout(interv, wait); }, 2.和 setInterval() 一样使用它 interval(function

    1.2K10

    为什么要用 setTimeout 模拟 setInterval

    最常见的出现的就是,当我们需要使用 ajax 轮询服务器是否有新数据时,必定会有一些人会使用 setInterval,然而无论网络状况如何,它都会去一遍又一遍的发送请求,最后的间隔时间可能和原定的时间有很大的出入...综上所述,setInterval 有两个缺点: - 使用 setInterval 时,某些间隔会被跳过; - 可能多个定时器会连续执行; 可以这么理解:**每个 setTimeout 产生的任务会直接 ...还是一秒后立即输出 5 个 5?   答案是:一秒后立即输出 5 个 5   因为 for 循环了五次,所以 setTimeout 被 5 次添加到时间循环中,等待一秒后全部执行。...## setTimeout 模拟 setInterval 综上所述,在某些情况下,setInterval 并不是很准确的。为了解决这些弊端,可以使用 settTimeout() 代替。...(interv, wait);     }; timer= setTimeout(interv, wait);  }, ``` 2.和 setInterval() 一样使用它 ```js interval

    1.2K40

    javaweb实现即时消息推送功能

    大家,又见面了,我是你们的朋友全栈君。...setInterval(function() { loadXMLDoc('fetchMsg') }, 2000) 上述代码,设置定时任务,每隔 2s使用 ajax发起一次请求,客户端根据服务端返回的数据来进行决定执行对应的操作...后端则返回一段字符串,这段字符串在返回前端时,有一个 callback字段调用前端的代码,类似于 jsonp的请求。...setTimeout(()=>{ createScript() }, 2000) } } window.onload = function() { createScript() } 使用 iframe...上面所提到的短轮询、长轮询、长连接,本质都是单向通信,客户端主动发起请求,服务端被动响应请求,但 WebSocket则已经是全双工通讯了,也就是说无论是客户端还是服务端都能主动向对方发起响应,服务器具备了真正的

    2.1K30

    高频面试题:JavaScript事件循环机制解析

    这些阶段大致的功能如下: 定时器检测阶段(timers): 这个阶段执行定时器队列中的回调如 setTimeout() 和 setInterval()。...闲置阶段(idle, prepare): 这个阶段仅在内部使用,可以不必理会 轮询阶段(poll): 等待新的I/O事件,node在一些特殊情况下会阻塞在这里。...timer阶段: 这个是定时器阶段,处理setTimeout()和setInterval()的回调函数。进入这个阶段后,主线程会检查一下当前时间,是否满足定时器的条件。...宏任务和微任务 宏任务: setImmediate setTimeout setInterval script(整体代码) I/O 操作等。...微任务: process.nextTick new Promise().then(回调) Promise.nextTick, setTimeout, setImmediate的使用场景和区别 Promise.nextTick

    1.4K40

    【拒绝拖延】常见的JavaScript内存泄露原因及解决方案

    function foo(){ name = '前端曰'; } // 其实是把name变量挂载在window对象上 function foo(){ window.name = '前端曰'; }...或者自己注意变量的定义! 1. 循环引用 在js的内存管理环境中,对象 A 如果有访问对象 B 的权限,叫做对象 A 引用对象 B。...被遗忘的延时器/定时器 在我们的日常需求中,可能会经常试用到 setInterval/setTimeout ,但是使用完之后通常忘记清理。.../setTimeout 中的 this 指向的是window对象,所以内部定义的变量也挂载到了全局;if 内引用了 someResource 变量,如果没有清除 setInterval/setTimeout...将其对#refA引用释放,但还是无法回收#refA。 解决方案:refA = null 。

    94940

    分享 10 道 Nodejs EventLoop 和事件相关面试题

    setTimeout/setInterval 定时器时间是否精确? Q1:Node.js 中定时功能的顺序是怎样的? Node.js 的定时器模块提供了在一段时间之后执行一些函数的功能。...总结起来一句话概括,事件轮询是 JS 实现异步的具体解决方案,同步代码直接执行,异步函数或代码块先放在异步队列中,待同步函数执行完毕,轮询执行异步队列的函数。...目前还是首选模型。...Q10: setTimeout/setInterval 定时器时间是否精确? 当实现一些定时任务的时候可能会想到使用 setTimeout/setInterval,但是它们的时间是精确的吗?...因此,setTimeout/setInterval 定时器时间并不是完全精确的(其实也在容忍范围,大部分业务是可以的),假如真的需要做一个精确的定时任务该怎么做呢?

    1.4K50
    领券