定時器設計的時間間隔準確嗎?

2022-06-28 07:03:09 字數 1698 閱讀 9075

有一好友今天在群裡突然發問?

定時器(setinterval)裡面的**如果執行的時間大於定時器設計的時間,會怎樣呢?

我不由的深思起來。。。。。

間隔首先要明確什麼是間隔?

假如有兩輛汽車a、b,兩輛車的間隔是多少呢,當然是a的尾部與b的頭部的距離了。

function test(): void , 1000)

}function fn():void

test()

index.js:60 thu mar 11 2021 15:37:24 gmt+0800 (中國標準時間) 1615448244801 "開始"

index.js:61 thu mar 11 2021 15:37:24 gmt+0800 (中國標準時間) 1615448244801 "結束"

間隔1s

index.js:60 thu mar 11 2021 15:37:25 gmt+0800 (中國標準時間) 1615448245802 "開始"

index.js:61 thu mar 11 2021 15:37:25 gmt+0800 (中國標準時間) 1615448245802 "結束"

間隔1s

index.js:60 thu mar 11 2021 15:37:26 gmt+0800 (中國標準時間) 1615448246800 "開始"

index.js:61 thu mar 11 2021 15:37:26 gmt+0800 (中國標準時間) 1615448246801 "結束"

每隔1s執行了一次發fn函式,很正常,正如我們理解的一樣。那fn函式執行的時間非常長,不能忽略呢?

function test(): void , 1000)

}function fn(): void

console.log(new date(), new date().gettime(), "結束")

}test()

index.js:64 thu mar 11 2021 16:11:10 gmt+0800 (中國標準時間) 1615450270673 "開始"

index.js:71 thu mar 11 2021 16:11:16 gmt+0800 (中國標準時間) 1615450276102 "結束"

間隔6ms

index.js:64 thu mar 11 2021 16:11:16 gmt+0800 (中國標準時間) 1615450276108 "開始"

index.js:71 thu mar 11 2021 16:11:21 gmt+0800 (中國標準時間) 1615450281505 "結束"

間隔2ms

index.js:64 thu mar 11 2021 16:11:21 gmt+0800 (中國標準時間) 1615450281507 "開始"

index.js:71 thu mar 11 2021 16:11:26 gmt+0800 (中國標準時間) 1615450286961 "結束"

可以知道,執行完乙個fn函式就會馬上執行第二個fn函式,間隔根本不是1s。

結論:1.如果,fn函式執行的時間》定時器設定的時間,時間間隔約等於零哦。

2.如果,fn函式執行的時間《定時器設定的時間,時間間隔約等於定時器設定的時間減去fn函式執行的時間。

注意的是fn是同步任務(巨集任務)哦。

間隔定時器itimer

間隔定時器的介面如下 include int getitimer int which,struct itimerval curr value int setitimer int which,const struct itimerval new value,struct itimerval old v...

Oracle job定時器的執行時間間隔學習彙總

oracle job 定時器的執行時間間隔也是定時器job 的關鍵設定,在這一設定上,開始還沒掌握,總是不知道怎麼寫,現總結如下,其實主要是使用了trunc next day add months last day 幾個函式的配合使用。1 每分鐘執行 interval trunc sysdate,m...

Oracle job定時器的執行時間間隔學習彙總

oracle job定時器的執行時間間隔學習彙總 oracle job 定時器的執行時間間隔也是定時器job 的關鍵設定,在這一設定上,開始還沒掌握,總是不知道怎麼寫,現總結如下,其實主要是使用了trunc next day add months last day 幾個函式的配合使用。1 每分鐘執行...