Js定时器生产环境中的使用与介绍


声明:本文转载自https://my.oschina.net/u/3737136/blog/1789698,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

1、分类

js的定时器有两种

setInterval(code,millisec[,"lang"]) :按照指定的周期(以毫秒计)来调用函数或计算表达式。方法会不停地调用函数,直到clearInterval() 函数被调用或窗口被关闭,由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

setTimeout(code,millisec) :在指定的毫秒数后调用函数或计算表达式。

2、settimeout和setinterval区别

setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次 
setInterval(表达式,交互时间)则不一样,它从载入后,每隔指定的时间就执行一次表达式 。

3、清除定时器:

window.clearInterval(timer1)和window.clearTimeout(time1);两种清除方式都可以清除通过setTimeout和setInterval设置的定时器(两种方式在设置定时器的时候有区别,清除定时器的时候没有区别),并且参数不仅可以是timer,还可以是其返回值,需要注意的是,定时器即使清除了,其返回值也不会清除,之后设置的定时器的返回值也会在其返回值的基础上继续向后排;

4、使用场景

(1)、写计时器,比如倒计时情况

(2)、轮询检测网络或者登陆状态

(3)、轮询定时刷新页面局部数据

...

5、使用方法

下面的例子是轮询检测网络状态信息用到了setInterval,setTimeout两个定时器

//轮询判断是否网络断开 checkNet();
/**  * 轮询,判断是否联网  */ function checkNet(){    setInterval(function(){       $.ajax({          url: getContextPath()+"/login/checknet",          type:"post",          timeout: 5 * 1000,          success:function(result){             console.log("轮询连接成功");          },          complete: function (XMLHttpRequest,status) {                 if(status == 'timeout') {                    console.log("complete网络断开!");                   var xmlhttp = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHttp");                    xmlhttp.abort();                        OffTheNet();                 }             }       });    }, 5 * 1000); }  /**  * 断网处理方案:重新登陆  */ function OffTheNet(outTime){    websocket.close();    var _time = 4000;    if(outTime != null && typeof(outTime) != "undefined"){       _time = outTime;    }    layer.msg("网络断开,请重新登陆!",{         icon: 0,         time: _time       });    setTimeout(function(){       sessionStorage.setItem("OFFTHENET",true);       location.href = getRootPath()+"/jsps/login/login.jsp";    },_time); }

6、新手容易出现的问题

       记得在不需要的页面如果有定时器任务一定要先关闭定时器任务,尤其是从定时任务的页面跳转到其他页面时,如果没有及时关闭有可能会多余的请求网络开销,浏览器页面打开缓慢,容易使得浏览器崩溃,我开发的时候就出现过这个情况。写这篇博客也是给自己一个提醒吧。

 

本文发表于2018年04月04日 22:38
(c)注:本文转载自https://my.oschina.net/u/3737136/blog/1789698,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2156 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1