任我行免root激活码 骗人的,交了一年的98会员用了7天就过期了,该怎么处理?

setInterval()、clearInterval()、setTimeout()和clearTimeout()js计数器方法-前端开发博客推荐文章 2055Views 3339Views 929Views 103Views 5044Views 9868Views热门文章
14,958Views
9,868Views
8,659Views
4,626Views
3,932Views
3,899Views
对这篇文章不满意吗?百度搜索:");文章标题:setTimeout原理和JavaScript运行机制
文章地址:
文章标签:
所属栏目:&&&
网站建设最新文章
网站建设热点文章
Copyright & 2004 - 2013 窍门天下.&&All Rights Reserved&&窍门天下QQ交流群:
备案号:蜀ICP备号-4织梦模板建站、织梦仿站,推荐选跟版网(专业织梦模板定制下载站),您可以把织梦模板网:
跟版网(www.genban.org)是专业的DEDECMS模板下载和定制开发服务商!
settimeout怎么用?JS中setTimeout()的用法详解
& &以下内容您可能感兴趣: &
setTimeout setTimeout 语法例子用 setTimeout 来执行 function不断重复执行的 setTimeout 设定条件使 setTimeout 停止计分及计秒的 counterclearTimeout Set flag1. SetTimeOut()1.1 SetTimeOut()语法例子1.2 用SetTimeOut()执行Function1.3 SetTimeOut()语法例子1.4 设定条件使SetTimeOut()停止1.5 计分及秒的counter2. ClearTimeout()3. Set Flag 10.1 setTimeout( )  setTimeout( ) 是属于 window 的 method, 但我们都是略去 window 这顶层物件名称, 这是用来设定一个时间, 时间到了, 就会执行一个指定的 method。请先看以下一个简单, 这是没有实际用途的例子, 只是用来示范 setTimeout( ) 的语法。1. setTimeout( ) 语法例子练习-69 等候三秒才执行的 alert( )  在 第 3 章 说到 alert 对话盒, 一般是用按钮叫出来, 在这练习, 你会看到网页开启后 3 秒, 就会自动出现一个 alert 对话盒。1. 请用浏览器开启示范磁碟中的timeout1.htm, 这档桉有以下内容:&html& &body bgcolor=lightcyan text=red&&h1& &font color=blue& 示范网页 &/font& &/h1& &p& &/br&&p& 请等三秒!&script&setTimeout(&alert('对不起, 要你久候')&, 3000 )&/script&&/body& &/html&2. 留意网页开启后三秒, 就会出现一个 alert 对话盒。  setTimeout( )是设定一个指定等候时间 (单位是千分之一秒, millisecond), 时间到了, 浏览器就会执行一个指定的 method 或 function, 有以下语法:  今次例子是设定等 3 秒 (3000 milliseconds), 浏览器就会执行 alert( ) 这一个method。2. 用 setTimeout( ) 来执行 function  setTimeout( ) 通常是与 function 一起使用, 以下是一个较上个练习複杂的例子。练习-70 状态列中自动消失的文字  在练习-20, 你看过如何用按钮在状态列显示文字, 然后再用按钮消除文字, 在这练习, 你看到如何用按钮在状态列显示文字, 而这文字会在三秒后自动消失。1. 请用浏览器开启示范磁碟中的timeout2.htm, 这档桉有以下内容:&html& &body bgcolor=lightcyan text=red&&h1& &font color=blue& 示范网页 &/font& &/h1& &p& &/br&&script&function clearWord( ){ window.status=&& }&/script&&form&&input type=&button& value=&在状态列显示文字&  onClick=&window.status='Hello' ,setTimeout('clearWord()', 3000) &&&/form&&/body& &/html&2. 请在按钮上按一下,你应见到状态列出现 Hello 这字, 留意过了三秒, 这字就会消失。1. 这处先设定一个名为 clearWord( ) 的 function, 作以下定义:window.status=&&  这是用来消除状态列的文字 (请看练习-20 的说明), 浏览器执行 clearWord( ) , 就会消除状态列的文字。2. 今次按钮设定了启动以下两项工作, 用 , 分隔, 浏览器会顺序执行这两项工作:onClick=&window.status='Hello' , setTimeout('clearWord( )', 3000) &3. 今次的 setTimeout( ) 有以下设定:  这是设定等 3 秒 (3000 milliseconds) 浏览器就会执行 clearWord( ) 这一个function。  在第 2 章, 你看过如何使到父视窗开启时自动开启一个子视窗, 若观看者不关闭这子视窗, 这子视窗就会一路开启。看过以上的练习, 请你设计一个会开启子视窗的网页, 而这子视窗在开启后两秒, 就会自动关闭。3. 不断重複执行的 setTimeout( )  setTimeout( ) 预设只是执行一次, 但我们可以使用一个循环方式, 使到一个setTimeout( ) 再启动自己一次, 就会使到第二个 setTimeout( ) 执行, 第二个又启动第三个, 这样循环下去, 这 setTimeout( ) 就会不断执行。练习-71 自动每秒加 1 的 function  在这练习, 你看到如何使用 setTimeout( ) 令文字框的数值每秒就加 1, 当然你也可以设定其他递增的速度, 例如每五秒就加 5, 或每五秒就加 1。1. 请用浏览器开启示范磁碟中的 timeout3.htm, 这档桉有以下内容:&html& &head&&script&x = 0function countSecond( ){ x = x+1  document.fm.displayBox.value=x  setTimeout(&countSecond()&, 1000)}&/script& &/head&&body bgcolor=lightcyan text=red& &p& &/br&&form name=fm&&input type=&text& name=&displayBox&value=&0& size=4 &&/form&&script&countSecond( )&/script&&/body& &/html&2. 网页开启后, 请你留意文字框中的数值转变。3. 请你将这档桉複製去硬碟, 更改一些设定, 例如 x = x+5, 或将等候时间改为5000, 看有什麽反应。1. 这网页有两个 script, 第一个是设定 countSecond( ) 这个 function, 第二个在后的是在网页完全载入后, 就启动这 function。2. 留意今次以下的设定:function countSecond( ){ x = x+1  document.fm.displayBox.value = x  setTimeout(&countSecond()&, 1000)}  当 countSecond( ) 启动后, 就会启动 setTimeout( ), 这个 method 在一秒后又启动 countSecond( ), countSecond( ) 启动后又启动 setTimeout( ) , 所以得出的结果是 countSecond( ) 每秒执行一次。3. 在 JavaScript, 我们是使用这处说的方法使到一些事项不断执行, 其中一个用途是显示转动时间, 另一个用途是设定跑动文字, 随后的章节会有例子。  用上述的方法设定时间, setTimeout( ) 虽然设定了是一秒, 但浏览器还有另外两项功能要执行, 所以一个循环的时间是稍多于一秒, 例如一分钟可能只有58 个循环。4. 设定条件使 setTimeout( ) 停止  setTimeout( ) 的迴圈开始后, 就会不断重複, 在上个练习, 你看到文字框的数字不断跳动, 但我们是有方法使到数字跳到某一个数值就停下来, 其中一个方法是用 if...else 设定一个条件, 若是 TRUE 就继续执行 setTimeout( ) , 若是 FALSE 就停止。  例如要使到上个练习的 counter 跳到 20 就停下, 可将有关的 function 作以下的更改。function countSecond( ){ if ( x & 20 )   { x = x + 1     document.displaySec.displayBox.value = x     setTimeout(&countSecond( )&, 1000)  }}5. 计分及计秒的 counter  在前面的练习, 相信你已学识如何使用 setTimeout( ), 现在请你看一个较複习的例子。练习-72 计时的 counter  在这练习, 你要设定两个文字框, 一个显示分钟, 另一个显示秒, 网页开启后, 就会在这两个文字框中自动计时。1. 请用浏览器开启示范磁碟中的timeout4.htm, 这档桉有以下内容:&html& &head&&script&x=0y=-1function countMin( ){ y=y+1  document.displayMin.displayBox.value=y  setTimeout(&countMin( )&,60000)}function countSec( ){ x = x + 1  z =x % 60  document.displaySec.displayBox.value=z  setTimeout(&countSec()&, 1000)}&/script& &/head&&body bgcolor=lightcyantext=red& &p& &/br&&table& &tr valign=top& &td& 你在本网页的连线时间是:&/td&&td& &form name=displayMin&&input type=&text& name=&displayBox&value=&0& size=4 &&/form& &/td&&td& 分 &/td&&td& &form name=displaySec&&/td&&td& &input type=&text& name=&displayBox&value=&0& size=4 &&/form& &/td&&td& 秒。&/td& &/tr& &/table&&script&countMin( )countSec( )&/script&&/body& &/html&2. 请你留意两个文字框中的数字转变。1. 这网页有两个 function, 一个用来计分钟, 一个用来计秒。在这处, 笔者只是示范setTimeout( ) 的操作, 因为计时器有其他更精简的写法。(留意: 这方式的计时并不准确。)2. 留意计秒的 function:function countSec( ){ x = x + 1  z = x% 60  document.displaySec.displayBox.value=z  setTimeout(&countSec()&, 1000) }  这处的 % 符号是 modulus (馀数), 例如 z = x % 60 表示先进行 x / 60, 得出的馀数作为 z 这变数, 例如 82 秒, modulus 就是 22, 所以文字框会显示 22 而不是 82。3. 若你要将单位数字在前加上 0, 例如 01, 02, 03 等, 可用以下方法:function countSec( ){ x = x + 1  z = x % 60  if (z & 10) { z = &0&+ z }  document.displaySec.displayBox.value=z  setTimeout(&countSec()&, 1000)}10.2 clearTimeout( )  在前一节, 你看过如何使用 setTimeout( ) 来使到浏览器不断执行一个 function, 当一个 setTimeout( ) 开始了循环的工作, 我们要使它停下来, 可使用 clearTimeout( ) 这 method。  clearTimout( ) 有以下语法: clearTimeout(timeoutID)  要使用 clearTimeout( ), 我们设定 setTimeout( ) 时, 要给予这 setTimout( ) 一个名称, 这名称就是 timeoutID , 我们叫停时, 就是用这 timeoutID来叫停, 这是一个自订名称, 但很多程式员就以 timeoutID 为名。  在下面的例子, 笔者设定两个 timeoutID, 分别命名为 meter1 及 meter2, 如下:timeoutID ↓meter1 =setTimeout(&count1()&, 1000)meter2 =setTimeout(&count2()&, 1000)  使用这 meter1 及 meter2 这些 timeoutID 名称, 在设定 clearTimeout( ) 时, 就可指定对哪一个 setTimeout( ) 有效, 不会扰及另一个 setTimeout( ) 的操作。练习-73 可停止的 setTimeout( )  这练习以练习-71为蓝本, 但作了两个改变: (1) 有两个 setTimeout( ), (2) 有两个按钮, 分别可停止这两个 setTimout( )。1. 请用浏览器开启示范磁碟中的clear.htm, 这档桉有以下内容:&html& &head&&script&x = 0y = 0function count1( ){ x = x+ 1  document.display1.box1.value= x  meter1=setTimeout(&count1()&, 1000)}function count2( ){ y = y+ 1  document.display2.box2.value= y  meter2=setTimeout(&count2()&, 1000)} &/script& &/head&&body bgcolor=lightcyantext=red& &p& &/br&&form name=display1&&input type=&text& name=&box1&value=&0& size=4 &&input type=button value=&停止计时& onClick=&clearTimeout(meter1)& &&input type=button value=&继续计时& onClick=&count1() & &&/form&&p&&form name=display2&&input type=&text& name=&box2&value=&0& size=4 &&input type=button value=&停止计时& onClick=&clearTimeout(meter2) & &&input type=button value=&继续计时& onClick=&count2( ) & &&/form&&script&count1( )count2( )&/script&&/body& &/html&2. 留意网页中的两个文字框及内裡变动的数字, 每个文字框旁有两个按钮, 请你试试两个按钮的反应。3. 请你连续按多次 [继续计时]的按钮, 留意数值的跳动加快了, 原因是每按一次就启动 function 一次, 每个 function 都令数值跳动, 例如启动同一的 function 四次, 就会一秒跳四次。(请看下一节)10.3 Set flag  前个练习说到我们用一个按钮来启动一个 function, 每按一下就会启动这 function 一次, 请看以下例子。练习-74 效果重複的 setTimeout( )  这练习实际是将 练习-73 简化, 只有一个计时器, 笔者想示范的是每按 [继续计时] 一次, 就会启动 count( ) 这 function 一次。1. 请用浏览器开启示范磁碟中的flag1.htm, 这档桉有以下内容:&html& &head&&script&x=0function count( ){ x = x + 1  document.display.box.value= x  timeoutID=setTimeout(&count()&, 1000)}&/script& &/head& &body bgcolor=lightcyantext=red& &p& &/br&&form name=display&&input type=&text& name=&box&value=&0& size=4 &&input type=button value=&停止计时& onClick=&clearTimeout(timeoutID) & &&input type=button value=&继续计时& onClick=&count( ) & &&/form& &p&&script&count( )&/script&&/body& &/html&2. 网页开启后, 你应见到文字框中的数字跳动, 请你按四次 [继续计时], 留意这会加快数字跳动, 原因是有关的 function 被开启了多个, 每个都会使数字转变。3. 按了四次 [继续计时] 的按钮后, 请你按 [停止计时] 的按钮, 你会发现要按五次才能停止数字跳动。  在编写程式时, 我们常要提防使用者作出一些特别动作, 例如使用者按两次 [继续计时] 按钮, 这计时器就失准了。我们是否有办法使到一个按钮被按一次就失效呢? 这就不会产生重複效果。  笔者藉这处的例子 (随后还有多个例子), 解说程式中一个 set flag (设定旗标) 的概念, flag 是一个记认, 一般来说, 这可以是 0 或是 1 (也可用 on 或 off, 或任何两个自选的名称或数字), 但也可以是 2、3、4 或更大的数字, 在这例子有以下设定:1. 程式开启时 flag=0。2. 当 counter( ) 执行时会顺便将 flag 变为 1。3. 在 [继续计时] 这按钮的反应中, 会先检查 flag 是 0 或是 1, 若是 0 就会产生作用, 若是 1 就没有反应。4. 使用这 flag 的方式, count( ) 这 function 开启后, [继续计时] 这按钮就没有作用。  这处的 flag 是一个变数, 可任意取名, 我们用 flag来称呼这变数的原因, 是因为这变数好处一支旗, 将旗竖起 (flag is on), 就会产生一个作用, 将旗放下 (flag is off), 就产生另一个作用。练习-75 只可开启一次的 function  这练习是将上个练习加多一个 flag, 使到每次只能有一个 count( ) 这 function 在进行。1. 请用浏览器开启示范磁碟中的flag2.htm, 这档桉有以下内容:&html& &head&&script&x = 0flag = 0function count( ){ x = x+ 1  document.display.box.value= x  timeoutID=setTimeout(&count()&, 1000)  flag = 1}function restart( ){ if (flag==0)   { count( ) }}&/script& &/head&&body bgcolor=lightcyantext=red& &p& &/br&&form name=display&&input type=&text& name=&box&value=&0& size=4 &&input type=button value=&停止计时&  onClick=&clearTimeout(timeoutID);flag=0& &&input type=button value=&继续计时& onClick=&restart() & &&/form& &p&&script&count( )&/script&&form&&input type=button value=&Show flag&onClick=&alert('The flag now is '+ flag)& &&/form&&/body& &/html&2. 在网页中, 你应见到三个按钮及文字框中的数字跳动。3. 请你按 [Show flag]这按钮, 应见到一个话对盒显示 flag 是 1。4. 请你按 [停止计时]这按钮, 数字停止跳动, 请你按 [Show flag] 这按钮, 应见到话对盒显示 flag 是 0。5. 请你按多次 [继续计时]这按钮, 你应见到数字不会加快, 请你按 [Show flag]这按钮, 应见到话对盒显示 flag 变回 1。1. 这网页第 4 行有这一句: flag=0 , 这是设定 flag 这变数及将初始值定为 0, 你也可将初始值定为 1, 随后有关的 0 和 1 对调。2. count( ) 这 function 最后一句是 flag=1 , 所以启动 count( ) 后, flag 就会变为 1。3. [继续计时] 的按钮是用来启动 restart( ), 这 function 有以下设定:function restart( ){ if (flag==0)    { count( ) }}  这处的 if statement 检查 flag是否等于 0, 若是 0 就启动 count(), 若是 1 (即不是 0) 就没有反应,使用这方法, 若 count( )已在执行中, [继续计时] 这按钮不会有作用。  这处的 flag=1设定, 实际设为 1 或 2 或 3 等数值都是一样的,只要不是 0 就可以了, 所以这两个相对的旗标,看似是 &0& 和 &1&, 实际是&0& 和 &non-zero& (非-0)。4. [停止计时] 的按钮有以下设定:onClick=&clearTimeout(timeoutID);flag=0&  这是停止 setTimeout( ) 的操作时,同时将 flag 转回 0, 这使到restart( ) 这function 可以重新启动 count()。
相关文章推荐:
1.setTimeout用法:js函数setTimeout延迟执行的简单介绍
跟版网-专业织梦模板下载平台,转载请注明出处:
& &精心为您推荐: &
& &邀您关注: &
扫描左侧二维码即可在手机端访问此页面
扫描左侧二维码即可关注跟版网官方微信公众号,获取金币模板,还可以免费仿站哦!
扫描左侧二维码即可加入跟版网官方群,免费获取金币资源并可以与其他织梦高手共同交流学习
跟版网率先实现织梦的三网合一网站,从即日起()日,跟版网会陆续免费分享一批金币资源给需要的朋友,关注本站认证官方微信公众账号并回复相应的提取码,系统会自动将下载地址发送给您,同时这些金币资源也会分享在官方的QQ群中,欢迎各位朋友踊跃加入。另外本站后期会每周选择大家比较喜欢的网站仿制,并免费分享给大家,还有免费送金币活动哦!
- dede源码分享
售价:10金币
- dede源码分享
售价:60金币
- dede源码分享
售价:120金币
- dede源码分享
售价:60金币
- dede源码分享
售价:3金币
& & & 跟版网竭力打造中国最大的织梦源码和织梦模板商城,我们有一批经验丰富的设计师和程序员,发展五年,跟版网拥有丰富的织梦模板,欢迎您的咨询,我们将竭诚为您提供最优质的服务。
& & & 跟版网织梦源码商城坚持“创意+品质+服务”的高端理念,运用创意设计的理念为您塑造高品质的网络品牌形象。凭借五年的探索和实践,跟版网织梦源码商城拥有一支经验丰富、技术精湛、尽职尽责的网络服务团队。精品网站建设,从跟版网织梦源码商城建站开始。
& & & 跟版网织梦源码和模板可分为两种形式获得,一种是官方源码,另外一种是会员共享源码。两种源码都分为免费和收费两种形式。
& & & 跟版网官方收费源码可通过支付费用获得,具体操作流程可查看网址:。会员共享源码可通过共享模板获取金币下载。如觉得麻烦,可以联系客服QQ:进行金币充值,充值后可随意下载。javascript的setTimeout()用法总结,js的setTimeout()方法
85949次浏览
js的setTimeout方法用处比较多,通常用在页面刷新了、延迟执行了等等。但是很多javascript新手对setTimeout的用法还是不是很了解。虽然我学习和应用javascript已经两年多了,但是对setTimeout方法,有时候也要查阅资料。今天对js的setTimeout方法做一个系统地总结。
setInterval与setTimeout的区别
说道setTimeout,很容易就会想到setInterval,因为这两个用法差不多,但是又有区别,今天一起总结了吧!
setTimeout
定义和用法: setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。  
语法: setTimeout(code,millisec)  
参数: code (必需):要调用的函数后要执行的 JavaScript 代码串。millisec(必需):在执行代码前需等待的毫秒数。
提示: setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。
setInterval
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
setInterval(code,millisec[,&lang&])
code 必需。要调用的函数或要执行的代码串。millisec
必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。
一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。
通过上面可以看出,setTimeout和setinterval的最主要区别是:
setTimeout只运行一次,也就是说设定的时间到后就触发运行指定代码,运行完后即结束。如果运行的代码中再次运行同样的setTimeout命令,则可循环运行。(即 要循环运行,需函数自身再次调用 setTimeout())
而 setinterval是循环运行的,即每到设定时间间隔就触发指定代码。这是真正的定时器。
setinterval使用简单,而setTimeout则比较灵活,可以随时退出循环,而且可以设置为按不固定的时间间隔来运行,比如第一次1秒,第二次2秒,第三次3秒。
我个人而言,更喜欢用setTimeout多一些!
setTimeout的用法
让我们一起来运行一个案例,首先打开记事本,将下面代码贴入,运行一下效果!
&!DOCTYPE html&
&meta http-equiv=&Content-Type& content=&text/ charset=UTF-8&&
&h1& &font color=blue& haorooms博客示范网页 &/font& &/h1&
&p& 请等三秒!&/p&
setTimeout(&alert('对不起, haorooms博客要你等候多时')&, 3000 )
页面会在停留三秒之后弹出对画框!这个案例应用了setTimeout最基本的语法,setTimeout不会自动重复执行!
setTimeout也可以执行function,还可以不断重复执行!我们再来一起做一个案例:
&!DOCTYPE html&
&meta http-equiv=&Content-Type& content=&text/ charset=UTF-8&&
function countSecond()
  document.haorooms.haoroomsinput.value=x
  setTimeout(&countSecond()&, 1000)
&form name=&haorooms&&
&input type=&text& name=&haoroomsinput&value=&0& size=4 &
countSecond()
&/body& &/html&
你可以看到input文本框中的数字在一秒一秒的递增!所以,setTimeout也可以制作网页中的时间跳动!
没有案例,学习起来不会很快,我们再来一起做一个例子,计算你在haorooms某个页面的停留时间:
&!DOCTYPE html&
&meta http-equiv=&Content-Type& content=&text/ charset=UTF-8&&
function countMin()
  document.displayMin.displayBox.value=y
  setTimeout(&countMin()&,60000)
function countSec()
{ x = x + 1
  z =x % 60
  document.displaySec.displayBox.value=z
  setTimeout(&countSec()&, 1000)
&/script& &/head&
&table& &tr valign=top& &td& 你在haorooms博客中的停留时间是: &/td&
&form name=displayMin&
&input type=text name=displayBox value=0 size=4 &
&td& 分 &/td&
&form name=displaySec& &/td&
&td& &input type=text name=displayBox value=0 size=4 &
&td& 秒。&/td& &/tr&
countMin()
countSec()
怎么样,通过上面的例子,对setTimeout()的用法,相信你都了解了吧!
clearTimeout( )
我们再来一起看一下 clearTimeout( ),
clearTimout( ) 有以下语法 :  
clearTimeout(timeoutID)
要使用 clearTimeout( ), 我们设定 setTimeout( ) 时 , 要给予这 setTimout( ) 一个名称 , 这名称就是 timeoutID , 我们叫停时 , 就是用这 timeoutID 来叫停 , 这是一个自定义名称 , 但很多人就以 timeoutID 为名。
在下面的例子 , 设定两个 timeoutID, 分别命名为 meter1 及 meter2, 如下 :
meter1 = setTimeout(“count1( )”, 1000)
meter2 = setTimeout(“count2( )”, 1000)
使用这 meter1 及 meter2 这些 timeoutID 名称 , 在设定 clearTimeout( ) 时 , 就可指定对哪一个 setTimeout( ) 有效 , 不会扰及另一个 setTimeout( ) 的操作。
下面请看 clearTimeout()的案例
&!DOCTYPE html&
&meta http-equiv=&Content-Type& content=&text/ charset=UTF-8&&
function count1()
{ x = x + 1
  document.display1.box1.value = x
  meter1=setTimeout(&count1()&, 1000)
function count2()
{ y = y + 1
  document.display2.box2.value = y
  meter2=setTimeout(&count2()&, 1000)
&/script& &/head&
&form name=&display1&&
&input type=&text& name=&box1& value=&0& size=4 &
&input type=button value=&停止计时& onClick=&clearTimeout(meter1) & &
&input type=button value=&继续计时& onClick=&count1() & &
&form name=&display2&&
&input type=&text& name=&box2& value=&0& size=4 &
&input type=button value=&停止计时& onClick=&clearTimeout(meter2) & &
&input type=button value=&继续计时& onClick=&count2() & &
通过上面的讲解,不知道您对setTimeout了解了没有,下次使用setTimeout会不会很熟练?会不会再把setTimeout和setInterval搞混了?要是您有什么不了解的地方,可以相互交流,共同提高,谢谢!
相关文章:
关键词搜索问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
var timeOut=function polling() {
timeOut = setTimeout(function () {
timeOut && clearTimeout(timeOut);
polling();
polling();
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
看情况。由于JS的单线程机制,计时器语句会被加入到执行队列。比如setInterval方法,如果该队列中有未执行的setInterval,那么再往里加的时候就会被自动忽略,同一个计时器调用等待执行的队列中最多只有一个执行。这里感谢 的提醒:但如果存在多个setInterval情况就复杂了,比如有N个setInterval那么等待队列中也有最多N个执行语句,需要看情况而定是否需要清除。而setTimeout既然只调用一次,如果有需要清除那么可以手动取消。计时器原理可以看看John Resig大神的这篇博客:网上有人给翻译了:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
不需要,因为它只会执行一次,在反复调用时,除了手动clearTimeout外,只需要把条件去了就可以停止。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
setTimeout:触发一次后,就停止了,无需手动clear。当然你可以在它触发前clear它,这样它一次都不会触发了。
所以,需要还是不需要,不是绝对的,要看你的使用场景。如果你在某种情况下,在计时器触发前需要终止它,那就需要,否则就不需要。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
setTimout & clearTimeout
可以认为成延时执行,调用后产生一个id,你可以保存到一个变量里。你可以使用clearTimeout(id),来移除这个延时执行。可以认为这是一个闹钟。
setInterval & clearInterval。
同理。但是,此方法是每隔你设置的时间会执行一次,可以在你想要的情况下结束掉这个计时器。
所以依据你的代码
不应该在setTimeout的回调里面写clearTimeout,因为这个时候已经没有用了,除非使用setInterval
如1所说,如果你要每隔5秒运行一次init,那就用setInterval吧。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
依你的使用场景而定如果你的定时调用可能需要在开始调用前取消掉,那么就需要clearTimeout了
var timeOut=
function polling() {
timeOut = setTimeout(function () {
//timeOut && clearTimeout(timeOut);//执行到此处时定时器已经被触发,你调用clearTimeout是没有任何效果的
polling();
polling();
//点击后停止定时器执行
$('#button').click(function(){
timeOut && clearTimeout(timeOut);//此时会将处于待处理状态的定时器函数取消执行
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App

我要回帖

更多关于 任我行免root官网 的文章

 

随机推荐