- 浏览: 100144 次
- 性别:
- 来自: 无锡
文章分类
最新评论
JavaScript里的这两个定时器函数,大家一定耳熟能详: setTimeout("函数()",毫秒)就是开启一个计时器,指定毫秒后执行该函数一次。 有关定时器,javascript还有另一个类似的函数,setInterval("函数()",毫秒)。不同的是,setInterval不是指定时间后执行一次该函数,而是每隔指定时间执行该函数,连续不断,直到clearInterval()。 问题是,在实际使用过程中,发现javascript的定时器很不靠谱。说好的多少多少时间后执行,但给人的感觉是忽快忽慢。明明指定3秒后执行,竟然5、6秒后才触发,或者不到1秒就触发了! 查阅资料,说是javascript为单线程,setTimeout之后,就注册了一个事件,进入排队,有空才执行,所以就慢了。大意如此。但快的情况呢?好像没说。 javascript引擎只有一个线程,迫使异步事件只能加入队列去等待执行。 在执行异步代码的时候,setTimeout 和setInterval 是有着本质区别的。 如果计时器被正在执行的代码阻塞了,它将会进入队列的尾部去等待执行直到下一次可能执行的时间出现(可能超过设定的延时时间)。 如果interval回调函数执行需要花很长时间的话(比指定的延时长),interval有可能没有延迟背靠背地执行。 上述这一切对于理解js引擎是如果工作的无疑是很重要的知识,尤其是大量的典型的异步事件发生时,对于构建一个高效的应用代码片段来说是一个非常有利的基础。 setTimeout的时候,记录当前时间戳 函数触发时,将时间戳与当前时间比较,看是否已经经过指定的毫秒数 时间未够,则继续setTimeout,步长可改为1秒 否则执行
<html> <head> </head> <body> <input type="button" value="开启" onclick="start()" /> </body> </html> <script type="text/javascript"> var t; var marktime = 0; var offset = 3000; function start(){ marktime = new Date().getTime();//1970年1月1日以来的毫秒数 t = setTimeout("hi()",offset);//3000毫秒后触发 } function hi(){ if (new Date().getTime() - marktime < offset) {//时间未够 t = setTimeout("hi()",1000);//一秒后再来看看 return; } alert("Hello World!"); } </script>
至于clearTimeout,经测试 var t = setTimeout("hi()",1000); clearTimeout();//不起任何作用 clearTimeout(t);//将计时器t消除 setTimeout的作用,就是注册一个计时器,计时器之间各自独立,不会覆盖和干扰;注册多少遍,就有多少个,执行指定函数后自己释放。所以每次setTimeout,应该获取返回值,以便操控: var t = setTimeout("hi()",1000); clearTimeout(t);//将计时器t消除
转自:http://blog.csdn.net/leftfist/article/details/51615164 谢谢!
发表评论
-
js两浮点数加减乘除
2018-02-12 17:53 506页面上输入两个数, 进行运算 //加 func ... -
js判断浮点类型相等, 相加, 相减
2018-02-12 16:38 766// 首先保留两位小数 var settleTotalA ... -
获取两个数组的交集
2017-05-03 14:38 359/* finds the intersection o ... -
ajax同步异步参数async(在debug下step by step运行正常,正常发布运行不正常)
2017-03-20 17:26 718//遇到的问题,在debug下step by step运行正常 ... -
request.getParameterValues与request.getParameter区别
2017-03-10 18:13 540一、 简单的对比 request.getParamete ... -
ajax form表单序列化 追加字段以及中文乱码问题
2017-03-09 11:47 884function saveProDes() { va ... -
ajax json的遍历,长度等
2017-03-08 15:06 1093//json对象 一、$.each遍历json对象 查看一 ... -
JS Replace 全部替换字符 用法
2017-01-10 10:14 396<script language="javas ... -
js文本框或者按钮鼠标悬停提示说明文字
2016-12-22 17:21 1116function title_show(fileId,Inve ... -
jQuery对select遍历option(添加、移除)
2016-12-22 17:09 5701. $("#select_id").ap ... -
js中没有equals方法,用==比较字符串
2016-11-28 21:28 640在 javaScript或者jQuery中字符串比较没有equ ... -
split判断小数点前数字(截取字符串)
2016-11-02 10:08 1057方法一:找到小数点位置然后截取 String number ... -
JS Date()对象
2016-09-21 14:23 456//使用 getDay() 和数组来显示星期,而不仅仅是数字。 ... -
window.opener.location.reload();弹出确认对话框
2016-09-20 17:53 1096window.opener.location.reload() ... -
addEventListener() 方法用于向指定元素添加事件句柄。
2016-09-15 17:11 446就是在JS中给HTML增加事件 <!DOCTYPE ht ... -
JavaScript 是脚本语言。浏览器会在读取代码时,逐行地执行脚本代码。而对于传统编程来说,会在执行前对所有代码进行编译。
2016-09-15 15:55 406JavaScript 是脚本语言。浏览器会在读取代码时,逐行地 ... -
element.src.match("bulbon")
2016-09-15 14:51 2301<!DOCTYPE html> <html ... -
disabled和readonly的区别
2016-07-13 16:00 356Readonly和Disabled它们都 ... -
<td align="center"> </td>不居中
2015-12-14 11:26 679<table> <tr> ... -
JS indexOf()
2015-12-11 11:37 537<script type = "text/j ...
相关推荐
关于在Vue中管理setTimeout和setInterval,尤其是涉及到Vue的路由切换时定时器未被销毁的问题,主要涉及到Vue的生命周期钩子、JavaScript的this关键字以及ES6箭头函数的特性。 首先,Vue中的生命周期钩子允许我们在...
setTimeout()从载入后延迟指定的时间去执行一个表达式或者是函数;仅执行一次 ;和window.clearTimeout一起使用.我在 代码如下:$(document).ready(function(){setTimout(test(),200); function test() { alert(1&#...
在JavaScript编程中,`setTimeout()`和`setInterval()`是两个非常关键的函数,它们用于实现异步编程,特别是在处理动画、定时任务或者延迟执行代码时不可或缺。这两个函数都是全局对象`window`的方法,它们的区别...
关于JS定时器(setTimeout setInterval)定时不准问题1 在JavaScript中,setTimeout和setInterval是两个基本的定时器函数,用于实现延迟执行或循环执行某个函数。然而,这两个函数在执行时往往和我们设置的延迟时间...
在IT行业中,我们经常遇到各种各样的问题,其中之一就是在使用模态对话框时,发现`setTimeout`函数似乎不再按照预期工作。这个问题主要出现在JavaScript编程环境中,尤其是在与UI交互时。模态对话框,如Bootstrap的...
在JavaScript编程中,`setTimeout`是一个非常重要的函数,它用于在指定的时间(以毫秒为单位)后调用一个函数或者执行某段代码。在这个场景中,标题提到的"setTimeout应用(模拟站长之家导航)"可能是指利用`...
setTimeout 描述 setTimeout(code,millisec) setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。 注:调用过程中,可以使用clearTimeout(id_of_settimeout)终止 参数 描述 code 必需,要调用的...
在这个主题中,我们将深入探讨`setTimeout`和`setInterval`这两个核心定时器函数,它们在JavaScript中的应用以及它们之间的区别。 首先,`setTimeout`函数用于在指定的毫秒数后调用一个函数或执行一段代码。它的...
setTimeout,javascript 延时执行函数,闭包处理 利用javascript闭包处理延时操作
在JavaScript编程中,`setTimeout`是一个非常常用的函数,它用于在指定的时间(以毫秒为单位)后调用一个函数或者执行某段代码。这个功能对于实现延迟执行、动画效果或者定时任务等场景非常关键。在本文中,我们将...
### 给C#添加SetTimeout和SetInterval函数 在日常的软件开发过程中,我们经常会遇到需要定时执行某些任务的情况。JavaScript 提供了 `setTimeout` 和 `setInterval` 这两个非常方便的函数来处理这样的需求。然而,...
然而,有时在模态对话框打开时,JavaScript的`setTimeout`函数可能会表现得不按预期,导致延迟执行的代码无法正常工作。本篇文章将深入探讨这个问题,并提供有效的解决方案。 `setTimeout`是一个异步执行的函数,它...
### JavaScript中的`window.setTimeout()`详解 #### 一、概述 在JavaScript编程中,`window.setTimeout()`函数是一个非常重要的异步编程工具,它允许开发者在指定的时间后执行特定的代码片段。这一特性对于实现...
本文将深入探讨一个围绕`setTimeout`函数的微型Promise封装,它只有28字节,但却能实现基本的异步操作。这个封装在JavaScript开发中尤其适用于轻量级任务,例如延迟执行、非阻塞UI更新等场景。 首先,让我们来看看...
使用javascript方法settimeout()函数来定时跳转页面。
使用SetInterval和设定延时函数setTimeout 很类似。setTimeout 运用在延迟一段时间,再进行某项操作。
使用setTimeout()方法模拟进度条
java后台定时器最简单用法实例,类似于js里的setTimeOut
### JS中setTimeout()的用法详解 #### setTimeout()概述 `setTimeout()` 是JavaScript中用于设置一个函数或代码段在指定时间后执行的函数。它是`window`对象的一个方法,通常被用于异步编程、设置延时任务、动画...
其中,setTimeout是JavaScript提供的一个非常重要的定时执行函数,它允许开发者设定代码在未来的某个时间点执行。尽管JavaScript是单线程的,但是通过setTimeout等机制,JavaScript能够实现非阻塞的异步编程模型。...