今天给大家分享一个就是关于setinterval的问题。首先了解setinterval,说白了就是一个定时器setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
  setinterval()用法
  setInterval(code,millisec[,“lang”])

后面就两个参数code是你的js代码,millisec为时间间隔,以毫秒计,
setTimeout是异步执行的,堆栈中碰到setTimeout会交给浏览器内核处理,等待setTimeout达到触发条件(即设定的时间),再返回给执行队列。简而言之,就是计时的这个操作是在浏览器端进行的,在计时完成后,将settimeout中的操作放入事件队列中。
比如我有以下一个简单的需求,就是从第三方工具爬取数据,然后每隔多少秒进行插入到数据库,这个就用到的以上的setinterval的问题,但是时间间隔太短之后就发现点击事件啥的都失效, 然而这块的原因就是请求的异步问题,具体的就是因为js的单线程的问题,这个不懂的童鞋可以问问度娘去看看,然而数据量一大就是会很吃内存,然后就想到了用settimeout的方法企业代替setinterval的问题。首先大体思路还是就是写一个延时器然后循环递归,下面我就拿我写的实验去简单介绍咋样使用,首先就是我利用apifox工具mock几百条数据,然后将几百条数据进行提交给后台,
h5的代码

<button @click="starthandle">导入到数据库</button>
starthandle(){var time=null;//首先明确思路,就是当延时器递归的时候就是将每一次的数据进行组装成data,可以进行索引操作。//初始化的索引值;var num=0,;//从第一条数据的时候开始插入var max_length=this.data.list;//这块的list就是请求第三方的网站爬取的数据。var that=this;setTimeout(function timer(){that.$http({url:'',//请求的插入的接口method:"",data:{//插入数据库的数据},}).then((data)=>{num++;//这块就是请求不管成功与否,让索引+1,每次请求的时候,插入的数据依次   插入请求的几百条数据的每一条。}).catch(err=>{console.log(err)})if(num === max_length){return;//判断当请求的数据刚好是请求的数据最后一条插完之后不在执行}time = setTimeout(timer,500)
})
}

这样就简单的实现了,但是在比如要写一个停止的按钮的时候,注意一点就是clearTimeout(time)发现没有效果,这时候可以在前面加上一个clearTimeout(time)的问题就ok了

settimeout代替setinterval解决setinterval跳过队列的问题相关推荐

  1. setInterval和setTimeout的区别以及setInterval越来越快问题的解决方法

    setInterval和setTimeout的区别以及setInterval越来越快问题的解决方法 参考文章: (1)setInterval和setTimeout的区别以及setInterval越来越 ...

  2. JavaScript计时器的用法setTimeout()和setInterval()

    Javascript计时器的用法 当我们学习前端的时候定时器是一个重要的知识点,几乎现在的我们打开一个网页中的页面都会看见定时器的身影,京东淘宝的定时秒,轮播图.规定时间的界面跳转- 在JavaScr ...

  3. 解决setInterval计时器不准的问题

    解决setInterval计时器不准的问题 参考文章: (1)解决setInterval计时器不准的问题 (2)https://www.cnblogs.com/flash3d/p/3715600.ht ...

  4. 解决setInterval函数传参问题

    修改window.setInterval函数,使其可以接收参数 var __sto = setInterval; window.setInterval = function (callback, ti ...

  5. php算法台阶,php如何解决青蛙跳台阶的问题(代码)

    本篇文章给大家带来的内容是关于php如何解决青蛙跳台阶的问题(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级 ...

  6. phpredis 报错 “Function Redis::setTimeout() is deprecated” 解决方法

    phpredis 报错 "Function Redis::setTimeout() is deprecated" 解决方法 参考文章: (1)phpredis 报错 "F ...

  7. django解决页面跳转问题

    django解决页面跳转问题 参考文章: (1)django解决页面跳转问题 (2)https://www.cnblogs.com/studong/p/9181524.html 备忘一下.

  8. 教你解决微信跳转appstore的困扰

    微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href="http://itunes.apple.com/us/app/id399608 ...

  9. jupyter notebook环境配置(重写config文件、配置默认工作文件路径、如何解决需要token登陆的问题/解决无法跳转浏览器问题等)

    一.重写config文件 1.输入cmd命令 jupyter notebook --generate-config 2.根据文件生成路径找到generate-config文件 3.双击或者记事本打开j ...

最新文章

  1. php最常见代码,PHP常见算法合集代码实例
  2. redis High Availability---Redis Sentinel翻译
  3. php简单网站源码包含数组_PHP 数组
  4. 起名算法 php,PHP实现各种经典算法详解
  5. QT使用html改变字体颜色,QT中设置字体和更改字体颜色
  6. java js获取css方法_5种JavaScript和CSS交互的方法
  7. mysql8 修改权限_MySQL8修改重置root密码,远程连接权限设置
  8. 有关软件工程的问题的分析和讨论及课后的作业3
  9. 69讲入门python_Python入门,一定要吃透这69个内置函数
  10. 制作 mysql的rpm文件_自制mysql.rpm安装包
  11. shell等待特定进程pid退出的方法
  12. (44)FPGA时序逻辑与组合逻辑(组合逻辑)
  13. [WinForm]dataGridView导出到EXCEL
  14. 微信小程序首支视频广告片发布
  15. 使用daemontools监控zookeeper,storm等进程
  16. http的响应码200,404,302,500表示的含义分别是?
  17. 常见的总线通信方式及其特点
  18. html倒计时面自动跳转,小代码   html 自己网页倒计时跳转
  19. 向传奇致敬,向约翰·纳什和他的妻子艾丽西亚致敬,缔造了数学和爱的传奇
  20. 超硬核|手把手教你制作一个示波器

热门文章

  1. css3八卦,CSS3 八卦图推演漩涡
  2. 沟通:多技能、学习能力、泛化能力的重要性
  3. c1 驾考成都龙岗科目三考试经验
  4. QML类型——Component
  5. HTML在黑色框中加白色文字,文字一部分黑色一部分白色的效果用css做怎么实现?_html/css_WEB-ITnose...
  6. setbkcolor
  7. 神经网络模型的实际案例,神经网络模型数据处理
  8. 奔驰事件疑宝马紧急预案;巴黎圣母院失火;郑大学生勾连间谍!
  9. openpnp - 贴片前, 放入一块新板子后, 对板子的坐标矫正
  10. windows10远程桌面登录ubuntu20.04