成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

如何讓setInterval定時器里面的函數(shù)先觸發(fā)一次再正常延時執(zhí)行

aervon / 1369人閱讀

摘要:如查看官方文檔不難發(fā)現(xiàn),,因此,如果需求確實要先執(zhí)行以下原函數(shù),再返回該函數(shù)給周期執(zhí)行。此時可以如下實現(xiàn)若不返回時,此函數(shù)只會執(zhí)行一次當然這里也可以先執(zhí)行原函數(shù),再加定時器,只是這樣寫的不漂亮嗎為什么不呢

需求背景

最近經(jīng)常遇到這樣的問題:需要間隔多少秒獲取一次數(shù)據(jù)。實際中,往往采用setInterval來實現(xiàn),但是當參數(shù)傳遞不當時,會出現(xiàn)先延遲了一段時間后再執(zhí)行獲取的數(shù)據(jù)的函數(shù)。

如:

var data1=0;
function count1(){
  console.log("count1:",data1++);
}
setInterval(count1,1000);

此時可以觀察控制臺,發(fā)現(xiàn)打印第一次會有延遲。如:

查看setInterval官方文檔不難發(fā)現(xiàn):

var intervalID = window.setInterval(func, delay[, param1, param2, ...]);
var intervalID = window.setInterval(code, delay);
Parameters

func,A function to be executed every delay milliseconds.






  code,


An optional syntax allows you to include a string instead of a function, which is compiled and executed every delay milliseconds. This syntax is not recommended for the same reasons that make using eval() a security risk.

因此,如果需求確實要先執(zhí)行以下原函數(shù),再返回該函數(shù)給setInterval周期執(zhí)行。此時可以如下實現(xiàn):

var data2=0;
var count2= function(){
  console.log("count2:",data2++);
  return count2;//若不返回時,此函數(shù)只會執(zhí)行一次
}
setInterval(count2(),1000);

當然這里也可以先執(zhí)行原函數(shù),再加定時器setInterval,只是這樣寫的不漂亮嗎?為什么不呢

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/106547.html

相關文章

  • JavaScript時器工作原理

    摘要:創(chuàng)建了一個簡單的計時器,在經(jīng)過給定的時間后,回調(diào)函數(shù)將會被執(zhí)行。接受一個計時器由之前兩種計時器返回并且停止計時器回調(diào)函數(shù)的執(zhí)行。然而,我們可以注意到,當定時器再一次觸發(fā)在計時器回調(diào)函數(shù)正在執(zhí)行的時候,這一次定時器回調(diào)函數(shù)被丟棄了。 最近都在看一些JavaScript原理層面的文章,恰巧看到了jQuery的作者的一篇關于JavaScript計時器原理的解析,于是誠惶誠恐地決定把原文翻譯成...

    geekzhou 評論0 收藏0
  • 重新認識時器

    摘要:重新認識三如果被推遲執(zhí)行的回調(diào)函數(shù)是某個對象的方法,那么該方法中的關鍵字將指向全局環(huán)境,而不是定義時所在的那個對象。 重新認識一 一般,setTimeout函數(shù)接受兩個參數(shù),第一個參數(shù)func|code是將要推遲執(zhí)行的函數(shù)名或者一段代碼(引擎內(nèi)部使用eval函數(shù),將字符串轉為代碼),第二個參數(shù)delay是推遲執(zhí)行的毫秒數(shù)。但是,setTimeout 還可以添加更多參數(shù)。第二個之后的參數(shù)...

    paney129 評論0 收藏0
  • 從setTimeout-setInterval看JS線程

    摘要:提出標準,允許腳本創(chuàng)建多個線程,但是子線程完全受主線程控制,且不得操作。所以,這個新標準并沒有改變單線程的本質。事件循環(huán)主線程線程只會做一件事,就是從消息隊列里面取消息執(zhí)行消息,再取消息再執(zhí)行。工作線程是生產(chǎn)者,主線程是消費者。 最近項目中遇到了一個場景,其實很常見,就是定時獲取接口刷新數(shù)據(jù)。那么問題來了,假設我設置的定時時間為1s,而數(shù)據(jù)接口返回大于1s,應該用同步阻塞還是異步?我們...

    elliott_hu 評論0 收藏0
  • javascript異步編程詳解

    摘要:在服務器端,異步模式甚至是唯一的模式,因為執(zhí)行環(huán)境是單線程的,如果允許同步執(zhí)行所有請求,服務器性能會急劇下降,很快就會失去響應。第三是,捕捉不到他的錯誤異步編程方法回調(diào)函數(shù)這是異步編程最基本的方法。 前言 你可能知道,Javascript語言的執(zhí)行環(huán)境是單線程(single thread)。所謂單線程,就是指一次只能完成一件任務。如果有多個任務,就必須排隊,前面一個任務完成,再執(zhí)行后面...

    huangjinnan 評論0 收藏0
  • 《高性能javascript》閱讀摘要

    摘要:當執(zhí)行上下文被創(chuàng)建時,它的作用域鏈初始化為當前運行函數(shù)的屬性中的對象。該過程搜索執(zhí)行環(huán)境的作用域鏈,查找同名的標識符。搜索實例成員比從字面量或局部變量中讀取數(shù)據(jù)代價更高,再加上遍歷原型鏈帶來的開銷,這讓性能問題更為嚴重。 最近在閱讀這本Nicholas C.Zakas(javascript高級程序設計作者)寫的最佳實踐、性能優(yōu)化類的書。記錄下主要知識。 加載和執(zhí)行 腳本位置 放在中的...

    duan199226 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<