- 浏览: 1116043 次
文章分类
- 全部博客 (379)
- S2SH (16)
- stuts2 (0)
- java语言 (81)
- JSP (17)
- <html>元素 (11)
- javaweb (4)
- web容器 (3)
- ext (23)
- javaScript (48)
- ant (1)
- liferay (1)
- sql (9)
- css (42)
- 浏览器设置 (3)
- office_world (1)
- eclipse (4)
- 其它 (28)
- 操作系统 (5)
- android (6)
- Struts2 (11)
- RegEx (3)
- mysql (5)
- BigDATA (1)
- Node.js (1)
- Algorithm (10)
- Apache Spark (1)
- 数据库 (5)
- linux (2)
- git (1)
- Adobe (3)
- java语言,WebSocket (1)
- Maven (3)
- SHELL (1)
- XML (2)
- 数学 (2)
- Python (2)
- Java_mysql (1)
- ReactJS (6)
- 养生 (4)
- Docker (1)
- Protocols (3)
- java8 (2)
- 书籍 (1)
- Gradle (2)
- AngularJS (5)
- SpringMVC (2)
- SOAP (1)
- BootstrapCSS (1)
- HTTP协议 (1)
- OAuth2 (1)
最新评论
-
Lixh1986:
Java并发编程:自己动手写一把可重入锁https://blo ...
Java之多线程之Lock与Condition -
Lixh1986:
http://win.51apps.com.cn/https: ...
temp -
ztwsl:
不错,支持很好
HttpServletRequest和ServletRequest的区别 -
guodongkai:
谢谢您能将知识精华汇编总结,让初学者们从原理中学会和提高。
javaScript之function定义 -
kangwen23:
谢谢了,顶顶
struts2中的ValueStack学习
在使用 setTimeout 時,假設要執行 4 次就如同下面的例子:
for (var i = 0; i < 4; i++) { console.log("A="+i); function A(){ console.log("B="+i); } window.setTimeout(A, 0); }
一般常理判斷結果應該是:
A=0
B=0
A=1
B=1
A=2
B=2
A=3
B=3
實際結果如下:
A=0
A=1
A=2
A=3
B=4
B=4
B=4
B=4
有沒有覺得很奇怪?
這是因為 javascript 屬於單執行序,看起來 window.setTimeout(A, 0); 似乎是馬上執行,但是實際上, for 迴圈裡的 setTimeout 會先放在代執行的堆疊裡,直到 for 迴圈結束,但如此一來到結束時,i 即為 4,所以結果就是堆疊裡的每個待執行任務中的 i 都為 4。
所以比較好的寫法應該是:
<html> <head> <script style='javascript' src=''></script> </head> <body > <script type="text/javascript"> var i = 0; function doAppend(){ if (i++ >= 4){ return; } console.log("B="+i); setTimeout(doAppend, 0); }//函数定义。只是定义,没有执行。 console.log(i);//i=0 setTimeout(doAppend, 0);//开始执行 </script> </body> </html>
跟上面的例子有什麼不同?上面的 setTimeout 每個是獨立的,這個例子的 setTimeout 將 一環接著一環,如此一來,每個 setTimeout 都會有正確的 i 了
-
另外一旦我們想要清除定時器,可以通過將定時時產生的ID標識傳遞給clearTimeout或者clearInterval函數來清除定時,至於使用哪個函數取決於調用的時候使用的是setTimeout還是setInterval。範例如下:
var id = setTimeout ( foo , 1000 ); clearTimeout ( id );
假設我們要清除所有定時器,但由於沒有內置的清除所有定時器的方法,可以採用一種暴力的方式來達到這一目的。
//清空"所有"的定時器 for ( var i = 1 ; i < 1000 ; i ++) { clearTimeout ( i ); }
可能還有些定時器不會在上面代碼中被清除(如果定時器調用時返回的ID值大於1000),因此我們可以事先保存所有的定時器ID,然後一把清除。
ref:
1、Javascript: setTimeout
http://smlsun.com/blog/2013/02/01/javascript-settimeout/
2、JavaScript可否多線程? 深入理解JavaScript定時機制
http://www.phpv.net/html/1700.html
-
发表评论
-
Javascript 测试框架之 隐式声明 之 describe
2019-06-25 15:26 2619为什么使用 javascript 测试框架时,没有显式导入 d ... -
JavaScript之ECMAScript6新特性之_03_箭头函数(Arrow Function)
2018-01-25 13:46 1125一、简介 箭头函数(Arrow Function)是 ES6 ... -
JavaScript之ECMAScript6新特性之_02_线程异步阻塞: Promise, Async / await
2018-01-12 16:51 2332刚出来不久的 ES8 包含了 async 函数,它的出现,终于 ... -
JavaScript之ECMAScript6新特性之_01_开篇
2017-08-17 02:54 608点此查看全部: http://es6-features.org ... -
jQuery Versions - browser support
2017-08-12 04:19 1637jQuery 3.2.1 Support Deskto ... -
基于HTML5实现的中国象棋游戏
2017-06-24 02:24 1695HTML5实现中国象棋游戏 http://www.w2bc.c ... -
JavaScript之跨域请求解决方案
2017-06-07 11:03 3993浏览器处于安全原因,在使用 Ajax 进行请求访问时,不允许跨 ... -
JavaScript之 25 道面试题
2017-04-17 17:05 96025 Essential JavaScript Intervi ... -
JavaScript小应用之分页算法
2017-03-16 12:56 674效果图: function getPagina ... -
jQuery之empty() VS. remove()
2017-03-16 10:32 729jQuery empty() vs remove() Wh ... -
jQuery之 prop() VS. attr()
2017-03-14 16:43 663attr() 用于自定义属性,id ; prop() 用于 ... -
jQuery之mouseover,mouseover,mouseout,mouseleave
2017-03-14 10:20 665Jquery mouseenter() vs mouseove ... -
javascript之JS操作iframe
2017-02-28 14:56 2198JS操作iframe 1. 获得iframe的w ... -
javascript之面向对象编程之原型继承
2017-01-02 15:34 1151前文讲到“属性继承” ... -
HTML5之Cookie,localStorage 与 sessionStorage
2016-12-22 18:35 851详说 Cookie, LocalStorage 与 ... -
jquery之live(), delegate(), on() 方法
2016-11-26 23:48 938通过下面的一个实例理解 jQuery 的 live(), de ... -
javascript之小应用:网页在线聊天
2016-11-08 11:48 4329概览 这款使用 PHP 和 javascript 搭建的 ... -
javascript之编程序题目
2016-11-06 17:30 10571. 判断两个字符串是否:字母相同切长度相同(空格不算)。 ... -
javascript之面向对象编程之属性继承
2016-10-23 21:09 926函数继承可以分为两种:1、继承其 this 属性 2、继承其 ... -
javascript 之 undefined
2016-08-12 11:01 717一、用法 undefined 关键字有两种用法: 1. 如 ...
相关推荐
使用SetInterval和设定延时函数setTimeout 很类似。setTimeout 运用在延迟一段时间,再进行某项操作。
在JavaScript编程中,`setTimeout()`和`setInterval()`是两个非常关键的函数,它们用于实现异步编程,特别是在处理动画、定时任务或者延迟执行代码时不可或缺。这两个函数都是全局对象`window`的方法,它们的区别...
其中,setTimeout是JavaScript提供的一个非常重要的定时执行函数,它允许开发者设定代码在未来的某个时间点执行。尽管JavaScript是单线程的,但是通过setTimeout等机制,JavaScript能够实现非阻塞的异步编程模型。...
Javascript的setTimeOut和setInterval函数应用非常广泛,它们都用来处理延时和定时任务,比如打开网页一段时间后弹出一个登录框,页面每隔一段时间发送异步请求获取最新数据等等。但它们的应用是有区别的。 ...
JavaScript 中 setTimeout 和 setInterval 函数的传参及调用 在 JavaScript 中,setTimeout 和 setInterval 函数都是用于在指定的时间点执行某个函数的,但是它们的传参方式和调用方式却有所不同。 setTimeout ...
必需,要调用的函数后要执行的 JavaScript 代码串。 millisec 必需,在执行代码前需等待的毫秒数。 setTimeinterval setInterval(code,millisec[,”lang”]) 参数 描述 code 必需,要调用的函数或要...
本文将详细介绍如何使用JavaScript的`setTimeout`函数实现倒计时效果。 `setTimeout`是JavaScript中的一个定时器函数,它可以指定一个函数在多少毫秒后执行一次。在倒计时应用中,我们利用`setTimeout`来定期更新...
在这个主题中,我们将深入探讨`setTimeout`和`setInterval`这两个核心定时器函数,它们在JavaScript中的应用以及它们之间的区别。 首先,`setTimeout`函数用于在指定的毫秒数后调用一个函数或执行一段代码。它的...
### JavaScript中的`window.setTimeout()`详解 #### 一、概述 在JavaScript编程中,`window.setTimeout()`函数是一个非常重要的异步编程工具,它允许开发者在指定的时间后执行特定的代码片段。这一特性对于实现...
本篇文章主要探讨`setTimeout(func, 0)`这一特定用法,它在JavaScript中的作用和实际应用场景。 `setTimeout`函数是JavaScript提供的一个全局方法,用于在指定的毫秒数后调用一个函数或执行一段代码。它的基本语法...
总结来说,`setTimeout`和`setInterval`是JavaScript中用于延迟和周期性执行代码的关键方法。`setTimeout`适用于单次延迟执行,而`setInterval`则用于重复执行,但需要注意其可能产生的执行延迟问题。在实际开发中,...
JavaScript是一种广泛使用的前端脚本语言,而setTimeout是JavaScript中用于实现定时器功能的一个重要函数。在Web开发中,setTimeout通常用来推迟某个函数的执行,直到指定的时间之后才进行调用。本文将介绍如何使用...
javascript中setTimeout使用指南 [removed] /* //方法1 function slows(){ alert("15S后弹出!"); } setTimeout("slows()",5000); //方法2 function slows(){ alert("15S后弹出!"); } ...
javascript setTimeout()函数的三种使用方法,刷新页面的源代码 [removed] function myrefresh(){ [removed].reload(); } setTimeout('myrefresh()',20000); //指定1秒刷新一次 [removed]
JavaScript是目前广泛使用的前端脚本语言之一,它在页面交互方面扮演着重要角色。在JavaScript中,setTimeout是常用的异步操作函数,用于设置一个定时器,该定时器在指定的毫秒数后执行一个函数。然而,由于...
setTimeout和setInterval是JavaScript中两个基本的定时器函数,它们在前端开发中有着广泛的应用。本文将详细介绍这两个函数的使用方法、差异、以及如何在实际项目中有效利用它们。 setTimeout和setInterval是...
主要介绍了javascript中setTimeout的问题以及对应的解决方法,需要的朋友可以参考下
除了setTimeout外,JavaScript还有一个与之相对应的setInterval函数。与setTimeout不同的是,setInterval用于重复执行函数或代码块,直到使用clearInterval取消。在实时显示时间的场景中,setTimeout和setInterval都...
关于在Vue中管理setTimeout和setInterval,尤其是涉及到Vue的路由切换时定时器未被销毁的问题,主要涉及到Vue的生命周期钩子、JavaScript的this关键字以及ES6箭头函数的特性。 首先,Vue中的生命周期钩子允许我们在...