国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

快速掌握Node.js中setTimeout和setInterval的使用方法

2024-05-06 16:29:53
字體:
來源:轉載
供稿:網友
這篇文章主要為大家介紹了快速掌握Node.js中setTimeout和setInterval的使用方法,感興趣的小伙伴們可以參考一下
 

Node.js和js一樣也有計時器,超時計時器、間隔計時器、及時計時器,它們以及process.nextTick(callback)函數來實現事件調度。今天先學下setTimeout和setInterval的使用。

一、setTimeout超時計時器(和GCD中的after類似)

在node.js中可以使用node.js內置的setTimeout(callback,delayMillSeconds,[args])方法。當調用setTime()時回調函數會在delayMillSeconds后

執行.setTime() 會返回一個定時器對象ID,可以在delayMillSeconds到期前將ID傳給clearTimeout(timeoutId)來取消。

function myfunc(){ console.log("myfunc");};var mytimeout=setTimeout(myfunc,1000);clearTimeout(mytimeout);
"C:/Program Files (x86)/JetBrains/WebStorm 11.0.3/bin/runnerw.exe" F:/nodejs/node.exe timer.jsProcess finished with exit code 0

如果將clearTimeout(mytimeout);這行注釋之后可以看到是會執行myfunc()。

"C:/Program Files (x86)/JetBrains/WebStorm 11.0.3/bin/runnerw.exe" F:/nodejs/node.exe timer.jsmyfuncProcess finished with exit code 0

二、setInterval間隔計時器(和GCD中的dispatch_source_t或NSTimer類似)

間隔計時器用來按定期的時間間隔來執行工作.和setTimeout類似,node.js中內置setInterval(callback,delayMilliSecond,[args])來創建并返回定時器對象Id,通過clearInterval()來取消。

/** * Created by Administrator on 2016/3/11. */function myfunc(Interval){ console.log("myfunc "+Interval);}var myInterval=setInterval(myfunc,1000,"Interval");function stopInterval(){ clearTimeout(myInterval); //myInterval.unref();}setTimeout(stopInterval,5000);

上面代碼是創建setInterval的回調函數myfunc,參數為Interval,setInterval每隔1s執行一次,setTimeout是在5秒之后執行,它的回調函數讓間隔計時器取消。

"C:/Program Files (x86)/JetBrains/WebStorm 11.0.3/bin/runnerw.exe" F:/nodejs/node.exe Interval.jsmyfunc Intervalmyfunc Intervalmyfunc Intervalmyfunc IntervalProcess finished with exit code 0

三、從事件循環中取消定時器引用

當事件隊列中僅存在定時器回調函數時,如果不希望再執行它們,可以使用setInterval和setTimeout返回對象的unref()函數來通知事件循環不要繼續。

當unref()和setTimeout結合使用,要用獨立計時器來喚醒事件循環,大量使用對性能也會產生影響,應盡量少用。

四、setTimeout和setInterval執行時間是不精確的

它們是間隔一定時間將回調添加到事件隊列中,執行也不是太精確

function simpleTimeout(consoleTime){ console.timeEnd(consoleTime);}console.time("twoSecond");setTimeout(simpleTimeout,2000,"twoSecond");console.time("oneSecond");setTimeout(simpleTimeout,1000,"oneSecond");console.time("fiveSecond");setTimeout(simpleTimeout,5000,"fiveSecond");console.time("50MillSecond");setTimeout(simpleTimeout,50,"50MillSecond");

以上代碼多執行幾次輸出的結果也是不一樣的。

"C:/Program Files (x86)/JetBrains/WebStorm 11.0.3/bin/runnerw.exe" F:/nodejs/node.exe timer.js50MillSecond: 51msoneSecond: 1000mstwoSecond: 2002msfiveSecond: 5001msProcess finished with exit code 0

以上就是本文的全部內容,希望對大家學習Node.js中setTimeout和setInterval的使用方法有所幫助。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黔东| 疏勒县| 淄博市| 蒲城县| 弥勒县| 固安县| 汕头市| 双城市| 喀什市| 黄骅市| 安多县| 仁寿县| 昌乐县| 双鸭山市| 兴城市| 南华县| 徐汇区| 福清市| 元谋县| 崇阳县| 霍林郭勒市| 江永县| 天台县| 宜黄县| 嘉祥县| 茂名市| 额尔古纳市| 读书| 长寿区| 东海县| 栾城县| 荔浦县| 黄龙县| 乌拉特中旗| 齐齐哈尔市| 睢宁县| 成武县| 永州市| 汝州市| 措美县| 武冈市|