摘要:如查看官方文檔不難發(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
摘要:創(chuàng)建了一個簡單的計時器,在經(jīng)過給定的時間后,回調(diào)函數(shù)將會被執(zhí)行。接受一個計時器由之前兩種計時器返回并且停止計時器回調(diào)函數(shù)的執(zhí)行。然而,我們可以注意到,當定時器再一次觸發(fā)在計時器回調(diào)函數(shù)正在執(zhí)行的時候,這一次定時器回調(diào)函數(shù)被丟棄了。 最近都在看一些JavaScript原理層面的文章,恰巧看到了jQuery的作者的一篇關于JavaScript計時器原理的解析,于是誠惶誠恐地決定把原文翻譯成...
摘要:重新認識三如果被推遲執(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ù)...
摘要:提出標準,允許腳本創(chuàng)建多個線程,但是子線程完全受主線程控制,且不得操作。所以,這個新標準并沒有改變單線程的本質。事件循環(huán)主線程線程只會做一件事,就是從消息隊列里面取消息執(zhí)行消息,再取消息再執(zhí)行。工作線程是生產(chǎn)者,主線程是消費者。 最近項目中遇到了一個場景,其實很常見,就是定時獲取接口刷新數(shù)據(jù)。那么問題來了,假設我設置的定時時間為1s,而數(shù)據(jù)接口返回大于1s,應該用同步阻塞還是異步?我們...
摘要:在服務器端,異步模式甚至是唯一的模式,因為執(zhí)行環(huán)境是單線程的,如果允許同步執(zhí)行所有請求,服務器性能會急劇下降,很快就會失去響應。第三是,捕捉不到他的錯誤異步編程方法回調(diào)函數(shù)這是異步編程最基本的方法。 前言 你可能知道,Javascript語言的執(zhí)行環(huán)境是單線程(single thread)。所謂單線程,就是指一次只能完成一件任務。如果有多個任務,就必須排隊,前面一個任務完成,再執(zhí)行后面...
摘要:當執(zhí)行上下文被創(chuàng)建時,它的作用域鏈初始化為當前運行函數(shù)的屬性中的對象。該過程搜索執(zhí)行環(huán)境的作用域鏈,查找同名的標識符。搜索實例成員比從字面量或局部變量中讀取數(shù)據(jù)代價更高,再加上遍歷原型鏈帶來的開銷,這讓性能問題更為嚴重。 最近在閱讀這本Nicholas C.Zakas(javascript高級程序設計作者)寫的最佳實踐、性能優(yōu)化類的書。記錄下主要知識。 加載和執(zhí)行 腳本位置 放在中的...
閱讀 3937·2021-11-22 13:54
閱讀 2708·2021-09-30 09:48
閱讀 2386·2021-09-28 09:36
閱讀 3139·2021-09-22 15:26
閱讀 1370·2019-08-30 15:55
閱讀 2535·2019-08-30 15:54
閱讀 1452·2019-08-30 14:17
閱讀 2364·2019-08-28 18:25