标签归档:setTimeout

使用setTimeout出现内存溢出的解决办法

setTimeout就是一个定时器,它可以很容易地实现在规定时间内所要执行的函数或方法。但是我再setTimeout的使用过程中就出现了内存溢出的各种问题。下面我将使用一个当前时间与过去的某个时间差的计算方式来进行讲解setTimeout,首先来看逻辑思想部分。
对于任何编程语言,我们刚开始都需要进行需求分析,需求分析就是一个实现功能的想法或者步骤。
比如我在这个例子中将会使用本地当前时间减去我所获得的时间,得到它们之间的时间差。

1、获得当前时间

获得当前时间可以直接使用new Date(),即可获得当前本地或者说本机时间。

2、目前已知时间为:2017-05-20 00:29:10

3、如何对时间进行相减

其实在JavaScript中,时间是可以直接进行减法运算的,不过必须是JavaScript的Date日期格式,如果是其他的则不支持,比如我们直接使用2017-05-20 00:29:10 – 2017-05-20 00:28:10,这样的相减是会报错的。而且也是无法相减的,因为他们两个是字符串,无法进行相减。那该怎么办?
很简单,我们将2017-05-20 00:29:10转换为Date对象即可。而JavaScript的Date对象得到的日期格式应该是这样的“Sat May 20 2017 00:33:26 GMT+0800”,我们可以通过new Date()对我们上面的字符串“2017-05-20 00:29:10”进行转换,但是转换之前必须将此字符串,转换为如下格式“2017/05/20 00:29:10”,这样的格式才能被JavaScript的Date()识别。
如此一来,他们就可以进行相减了。

4、相减后获得的秒数该如何计算?

两个日期相减得到的是毫秒数,根据1000毫秒=1秒的计算方式,我们可以得到要将毫秒转换为秒,我们需要将当前的毫秒数除以(1000*60)再乘以60,由此可以得到公式(毫秒/(1000*60)*60就可以得到秒数)。

5、在页面上实时显示秒数

这里就进入了我们今天的正题了,使用setTimeout定时器即可实现,其用法setTimeout(code,time),其中code是即将执行的代码,time为执行的毫秒数。

6、使内存溢出的setTimeout

继续阅读使用setTimeout出现内存溢出的解决办法