日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

setInterval(callback(),time)

發(fā)布時(shí)間:2024/4/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 setInterval(callback(),time) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在寫一個(gè)需求的時(shí)候,出了點(diǎn)小小的問題,在這做個(gè)記錄。

對于定時(shí)函數(shù)setInterval()大家應(yīng)該都不陌生,setInterval(callback(),time)就是說設(shè)置一個(gè)定時(shí)器,每隔time時(shí)間,

(當(dāng)然這個(gè)時(shí)間是以毫秒計(jì)算的,1秒=1000毫秒)執(zhí)行一次回調(diào)callback();

我剛開始這么寫的代碼:

function forbidden(){var time = 60;$('.getSms').attr('disabled','disabled');if(time>0){var timer = setInterval(function(){$('.getSms').text(time+'秒后重新發(fā)送');time--;};1000);}else{window.clearInterval(timer); $('.getSms').text('發(fā)送短信');$('.getSms').attr('disabled',false);}

當(dāng)時(shí)是這么想的,單擊發(fā)送短信按鈕觸發(fā)forbidden(),初始化一個(gè)變量time=60,并且此時(shí)按鈕不可用,然后判斷:如果

time大于0,執(zhí)行定時(shí)器timer(time--),等到time小于等于0的時(shí)候,清除定時(shí)器,按鈕的顯示文字也改變,并且變?yōu)榭捎?#xff0c;

好像一切都是這么地呵護(hù)邏輯,但是!!!點(diǎn)擊按鈕之后,看著上面的數(shù)字由60一點(diǎn)一點(diǎn)地減,減到0之后,變成了-1,-2...

瞬間懵逼了,于是就在else語句里面打一個(gè)console.log(time),然后再跑一遍,等到數(shù)據(jù)為-1的時(shí)候,控制臺沒打印time值,

然后意識到,這個(gè)定時(shí)函數(shù)一直在跑,time=-1的時(shí)候,并沒有進(jìn)行判斷,于是~~~~把time的判斷放到callback()里面,像這樣:

function forbidden(){var time = 60;$('.getSms').attr('disabled','disabled');var timer = setInterval(function(){$('.getSms').text(time+'秒后重新發(fā)送');time--;if(time<0){console.log(time);window.clearInterval(timer); $('.getSms').text('發(fā)送短信');$('.getSms').attr('disabled',false);}}, 1000);}

然后,問題解決。

事后,覺得可以這么理解,定時(shí)函數(shù)是一個(gè)獨(dú)立的空間,一旦開啟,就一直執(zhí)行(對后續(xù)代碼段造成阻塞),然而我們在定時(shí)器后

面規(guī)定,time<0的時(shí)候,清除定時(shí)器,這句代碼壓根一直都沒執(zhí)行,又怎么會(huì)生效呢,放在callback()里面就不一樣了,每隔1秒執(zhí)行

一次callback(),每執(zhí)行一次callback()就會(huì)判斷了,time是不是小于0啊,不是的話待會(huì)還是要執(zhí)行callback(),如果是的話,待會(huì)就

不執(zhí)行這個(gè)callback()了。

轉(zhuǎn)載于:https://www.cnblogs.com/eco-just/p/9160817.html

總結(jié)

以上是生活随笔為你收集整理的setInterval(callback(),time)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。