在做demo时很容易不给定时器设置一个变量存储,而是直接用定时器了,如果数据量大的话就会在控制台一直输出,这时候你应该静下心来把定时器清除就是了

假设我们有100,000条消息,根据视频播放的进度展示对应的消息,不展示历史消息。

// 模拟原始消息列表,
const newList = new Array(100).fill(1).map((item, index) => {return {time: (index + 1) * 1000,       // 消息发送的时间,一秒一个content: `这是第${index + 1}s发送的消息` // 消息发送的内容}
})// 发送的消息列表
const sendList = [];
function getMessage(time) {let j = 0; // 循环次数for(let i = 0, len = newList.length; i < len; i++) {const item = newList[i];j++;// 这里的time如果不是1000、2000,而是1234、1214这种,就需要取一个浮动范围// 我这里就是简单用了定时器,所以比较简单if(item.time === time) {sendList.push(newList[i])newList.splice(i, 1)i--;} else if(sendList.length > 0) {break;}}console.log('播放进度', time)console.log('循环的次数', j);console.log('接收的消息的长度', sendList.length, sendList);console.log('原始消息的长度', newList.length);}let time = 0;
// 定时器,1s触发一次
let timers = setInterval(() => {time += 1000;getMessage(time);
}, 1000)

解决办法:直接暴力清除定时器

for (let i = 0; i < 100000; i++) {clearInterval(i)
}

一:clearTimeout(timeId)

取消由 setTimeout() 方法设置的 timeId。

clearTimeout(id_of_settimeout)
//setTimeout 1000ms后执行1次
var test1 = setTimeout(function(){//your codes
},1000);//setInterval 每隔1000ms执行一次
var test2 = setInterval(function(){//your codes
},1000)//清除Timeout的定时器,传入变量名(创建Timeout定时器时定义的变量名)
clearTimeout(test1);

二:clearInterval(timeId)

取消由 setInterval() 设置的 timeId。

clearInterval(id_of_setinterval)
//setTimeout 1000ms后执行1次
var test1 = setTimeout(function(){//your codes
},1000);//setInterval 每隔1000ms执行一次
var test2 = setInterval(function(){//your codes
},1000)//清除Interval的定时器,传入变量名(创建Interval定时器时定义的变量名)
clearInterval(test2);

js 清除已运行的定时器clearTimeout() 和clearInterval()相关推荐

  1. js 定时器用法详解——setTimeout()、setInterval()、clearTimeout()、clearInterval()

    写在前面: 在js应用中,定时器的作用就是可以设定当到达一个时间来执行一个函数,或者每隔几秒重复执行某段函数.这里面涉及到了三个函数方法:setInterval().setTimeout().clea ...

  2. js定时器用法详解——setTimeout()、setInterval()、clearTimeout()、clearInterval()

    写在前面: 在js应用中,定时器的作用就是可以设定当到达一个时间来执行一个函数,或者每隔几秒重复执行某段函数.这里面涉及到了三个函数方法:setInterval().setTimeout().clea ...

  3. js清除所有定时器(包括未知定时器)

    我们有时会有清除页面中所有定时器的需求 如果我们在创建定时器(setInterval)的时候用一个变量保存了它,那么清除这个定时器很简单,直接清除(clearInterval)就好了 例如: let ...

  4. js vue中setTimeout无法通过clearTimeout清除问题

    js vue中setTimeout无法通过clearTimeout清除问题 在异步清除中,利用vue 中data存放setTimeout的标识进行清除时,无法清除.则需要在函数前加上window.即可 ...

  5. nodejs定时器setInterval,setTimeout,clearTimeout, clearInterval源码学习

    nodejs Timer nodejs Timer timer.unref()的失效情况 先看timer.unref的底层调用 对失效的解释 定时器的创建 TimerWrap TimerWrap() ...

  6. “Node.js 包已不值得信任”

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 近来,频繁发生的 npm 供应链攻击令开发者们精疲力竭: 流行 npm 包 faker.js 和 colors.js 的作者为抵制&qu ...

  7. php 本站已运行了多少天,网站添加本站已运行XX天的统计代码

    傲世发现有许多的站长都喜欢给自己的网站上加一个本站已运行时间的显示,那么该如何做到呢?今天傲世就给大家分享几种方法,希望能帮到你. js实现网站已运行XX天的代码 示例1: //添加网站的上线时间 v ...

  8. [Winform]只允许运行一个exe,如果已运行则将窗口置前

    摘要 接着介绍项目中用到的一些方法,在winform中,打好包,有时并不允许运行多个客户端,要保证只有一个客户端运行.如果已经运行了,则弹出已运行的窗口,使其展示. 方法 判断是否有相同的进程 /// ...

  9. 熊猫直播宣布正式关站 至今已运行1286天

    [TechWeb]3月31日消息,昨日,熊猫直播官网发布公告,宣布熊猫直播正式关站. 熊猫直播在公告中表示,"很遗憾作为熊猫守卫者,我们将正式与大家告别.""从 2015 ...

最新文章

  1. 从Nature 封面文章“天机”芯片看脑科学与AI的融合
  2. 使用librdkafka的C++接口实现简单的生产者和消费者
  3. IDEA发布运行web项目(曾经遇到的项目启动报404)
  4. oracle重启数据库一般要多久,优化Oracle停机时间及数据库恢复
  5. php 开发一个聊天系统,ajax+php 实现一个简单的在线聊天室功能(附带源码)
  6. IIS 中 另一个程序正在使用此文件,进程无法访问!
  7. linux安装jdk环境
  8. Unable to compile template. Check the Errors list for details 问题解决办法
  9. bookstrap必备的基础知识
  10. 十二款硬盘数据恢复软件,百分之九十五的人没听过!
  11. 解读《美国国家BIM标准》– BIM能力成熟度模型(六)
  12. matlab 识别车辆,基于MATLAB的车辆牌照识别系统设计
  13. 六、Python文件操作
  14. loss weight
  15. 在word中一个符号怎么打,这个符号是上边一个白三角,下边一个黑三角,两个三角对称形成一个向右的箭头。
  16. C语言单元作业的答案,C语言习题全集+答案.doc
  17. 「Python入门」Python多进程
  18. 没有比粥更温柔的了。念予毕生流离红尘,就找不到一个似粥温柔的人。
  19. gcc参数-Wl,–gc-sections,不链接未用函数,减小可执行文件大小
  20. 关于如何区分Android手机是32位还是64位

热门文章

  1. 实习日记——Day3
  2. 成年后,让我快速成长的50个人生建议
  3. 视频文件格式扩展名/专用名词详解_拔剑-浆糊的传说_新浪博客
  4. 机械键盘测试(2)——《万历十五年》
  5. 哀悼使网站整体变灰或黑
  6. java计算机毕业设计基于springboo+vue的教师人事档案管理系统
  7. 2019网络技能大赛OpenDayLight-软件定义网络样题题目及答案
  8. Linux ELF文件
  9. 配置数据库jdbc:mysql:///(三条斜线),用户访问被拒绝
  10. 团队作业2---需求分析原型设计