使用 setTimeout 来模拟一个 setInterval
setTimeout 超时调用;在多少时间 在执行;
setinterval 每隔多少时间 就调用
例如:
setTimeout这个的值是1000,也就是说在页面刷新后,1000毫秒之后才调用这个函数体内的东西
setTimeout有一个最低的时间限制,400s
setinterval的值是1000的话,就是每过1000毫秒执行一次
1 为什么要模拟 ? 2 然后模拟是解决了什么 ?
3.setinterval 有两个缺点:
1、setInterval无视网络延迟,只要达到时间,就会进行下一次调用。假设我们在请求一个http接口,在上 一次还未返回结果的情况下,继续发起请求,很有可能的结果就是一次性得到多次同样的结果。当http接口都报错的时候,可能同时出现多次错误提示。或者多次页面刷新的状况。
2、假设每100毫秒执行一次,若上次执行只花了5ms,则下次执行会在95ms以后。时间并不准确。
3、即使setInterval调用的方法报错了,他仍然会继续执行。
// 定时间隔执行
const myInterval = function(fn, t) {
const obj = {
timmer: null
};
(function inner() {
fn();
obj.timmer = setTimeout(inner, t);
})();
return obj;
};
// 清空定时执行
const clearMyInterval = function(obj) {
clearTimeout(obj.timmer);
};
// 使用示例
let tt = myInterval(() => {
console.log(1);
}, 1000);
// 清空示例
setTimeout(() => {
clearMyInterval(tt);
}, 3000);
使用 setTimeout 来模拟一个 setInterval的更多相关文章
- window.settimeout用法与window.setInterval用法的区别
setTimeout 和setInterval的功能都是经过某一个时间段后发生某件指定的事件或者方法. window.setTimeout方法是定时程序,也就是在某时间以后干什么, window.se ...
- setInterval和setTimeout的区别以及setInterval越来越快问题的解决方法
setInterval()和setTimeout()方法都是js原生的定时方法,当然它们两个的作用也是不同的,并且最近在做上下滚动公告栏的时候,发现了setInterval()非常令人抓狂的问题,那就 ...
- 自定义模拟一个Spring IOC容器
一.模拟一个IOC容器: 介绍:现在,我们准备使用一个java project来模拟一个spring的IOC容器创建对象的方法,也就是不使用spring的jar自动帮助我们创建对象,而是通过自己手动书 ...
- 使用LinkedList模拟一个堆栈或者队列数据结构
使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出 如同一个杯子. 队列:先进先出 如同一个水管. import java.util.LinkedList; public cl ...
- scala模拟一个timer
直接上代码: package com.test.scalaw.test.demo import java.util.Date /** * 模拟一个定时timer */ object Timer { d ...
- C# 模拟一个处理消息队列的线程类 Message Queue
// 模拟一个处理消息队列的类 class MessageHandler { // 消息队列 private Queue<string> messageQue = new Queue< ...
- java集合 collection-list-LinkedList 模拟一个堆栈或者队列数据结构。
/* 使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出 如同一个杯子. 队列:先进先出 First in First out FIFO 如同一个水管. */ import jav ...
- jquery用div模拟一个下拉列表框
原文 jquery用div模拟一个下拉列表框 今天分享一个用我自己用jquery写的,用div模拟下拉列表select,这个效果网上有很多,但是写一个有自己思路的代码效果,更有成就感,先看截图: 自我 ...
- Java LinkedList特有方法程序小解 && 使用LinkedList 模拟一个堆栈或者队列数据结构。
package Collection; import java.util.LinkedList; /* LinkedList:特有的方法 addFirst()/addLast(); getFirst( ...
随机推荐
- Django自定义认证系统
官网教程:https://docs.djangoproject.com/en/2.2/topics/auth/customizing/ app下的model.py from django.db imp ...
- Centos与Ubuntu
共同点 1.两个系统都分别有桌面系统与服务器系统,不过ubuntu的桌面从外观上来看要比centos的漂亮 不同点 1.centos中新建的普通用户是没有sudo权限的,如果想让普通用户拥有sudo权 ...
- Hyper-V虚拟机Redhat添加网卡找不到网卡配置文件解决方法
环境:Hyper-V虚拟机上面安安装Redhat6.7 问题:系统安装时,只有一块网卡,现根据需要,增加一块网卡,DHCP获取IP地址,在Hyper-V设置中增加网卡后,存在连个问题:1./etc/s ...
- 剑指offer--二维数组中查找
剑指offer--二维数组中查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序, 每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组 ...
- C语言博客作业7
本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业链接 我在这个课程的目标是 熟练运用switch语句 这个作业在那个具体方面帮助我实现目标 完成pta作业 参考文献 文章 ...
- 推荐一本学习Groovy的书籍Groovy程序设计!
有朋友公司在用groovy开发,于是推荐我学习一下,搜到了这本书: 花了一个月时间读完了这本书!写的很棒,几乎没有废话,全书都是很重要的知识点和很好的讲解,确实像封面说的那样,使用的好可以提高开发效率 ...
- Java 中的各种锁和 CAS + 面试题
Java 中的各种锁和 CAS + 面试题 如果说快速理解多线程有什么捷径的话,那本文介绍的各种锁无疑是其中之一,它不但为我们开发多线程程序提供理论支持,还是面试中经常被问到的核心面试题之一.因此下面 ...
- 17、Wireless
1. WLAN在物理层采用的是无线电 i. wlan采用csma/ca代替lan的csma/cd ii. 工作在半双工模式,共享带宽(无法在发送的同时接收信号) 2. WLAN会遇到的问题 ...
- CCF_ 201312-3_最大的矩形
遍历数组中每一元素,左右延伸得出宽度. #include<iostream> #include<cstdio> using namespace std; int main() ...
- python之面向对象01
1.面向过程编程最容易被初学者接受,其往往用一段长代码来实现指定功能,开发过程的思路是将数据与函数按照执行的逻辑顺序组织在一起,数据与函数分开考虑. 2.类与对象 (1)类是抽象的,是有相同属性和行为 ...