setInterval 函式的用法心得

2021-08-03 23:41:14 字數 1759 閱讀 8309

最近在用setinterval()函式實現乙個倒計時功能,倒計時結束則跳轉到另乙個頁面。

遇到的問題如下:

有問題的**:
var islogin = getcookie("islogin");

var num = 5;

if (islogin != 1)

},1000);

location.href="../user/login.html?url=當前瀏覽器的url";

如果將**,寫成這樣的話,發現當頁面一開啟的話,過了一秒就轉到另乙個頁面了,而本來顯示倒計時的標籤沒有數值。

在除錯的過程中,將

location.href="../user/login.html?url=當前瀏覽器的url";這句話注釋掉後,發現num輸出值是符合要求的,說明當沒有加跳轉鏈結前,**正常執行。
現在在 location.href="../user/login.html?url=當前瀏覽器的url";的前面加上語句:console。log("output here");
var islogin = getcookie("islogin");

var num = 5;

if (islogin != 1)

},1000);

console.log("output here");

location.href="../user/login.html?url=當前瀏覽器的url";

輸出結果是:
output here
num:0
從輸出的結果,我們可以發現,console.log("output here");語句比定時器裡面的語句先執行的快。也就是說,按照上面的寫法,當頁面載入的時候,當流程走到定時器函式的時候,程式並不會一
直停在定時器函式裡面,而是並行的執行下面的語句,也就是執行跳轉頁面語句,此時定時器函式還沒有執行完。即也就是為什麼頁面載入完時候,會馬上跳轉頁面了。
解決方法:將跳轉語句放在定時器函式裡面:如下面所示:

這是顯示正常的**:

var islogin = getcookie("islogin");

var num = 5;

if (islogin != 1)

},1000);

總結:如果我們想實現定時功能,時間到就執行相應操作,要把該操作放在判斷定時器結束的判斷條件裡面,也就是把操作放在定時器函式裡面。

不能把操作和定時器函式放在並行的位置。
在c等語言裡面,程式都是按照順序執行的,但是在js裡面特別,當在定時函式的後面還有相應操作的語句,那麼瀏覽器不會等到定時器結束才執行定時器函式後面的
語句,而是並行執行。也就是定時時間還沒到,就執行定時函式後面的語句了

關於setInterval 函式

最近接到新的需求,流程監控!其中涉及到進度條,我第一想法是使用echarts好用的圖表工具!找到心儀的進度條圖形對應 深入研究之後,發現其中涉及到setinterval function interval 函式,每隔一定時間執行其中的函式 匿名函式或函式名 此時由於需求我的想法是讓間隔時間inter...

js的setInterval函式語法

setinterval 間隔指定的毫秒數不停地執行指定的 1.語法 setinterval codes,interval setinterval函式的id標識,每次呼叫setinterval函式都會產生乙個唯一的id,可以通過clearinterval函式 此函式的引數接收乙個setinterval...

使用匿名函式為setInterval傳遞引數

在使用jscript的時候,我們有時需要間隔的執行乙個方法,比如用來產生網頁ui動畫特效啥的。這是我們常常會使用方法setinterval或settimeout,但是由於這兩個方法是由指令碼宿主模擬出來的timer執行緒,在通過其呼叫我們的方法是不能為其傳遞引數。我們常用的使用場景是 delayru...