欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年03月21日 16:50:49   作者:小崔的筆記本  
這篇文章主要為大家介紹了快速掌握Node.js中setTimeout和setInterval的使用方法,感興趣的小伙伴們可以參考一下

Node.js和js一樣也有計(jì)時(shí)器,超時(shí)計(jì)時(shí)器、間隔計(jì)時(shí)器、及時(shí)計(jì)時(shí)器,它們以及process.nextTick(callback)函數(shù)來(lái)實(shí)現(xiàn)事件調(diào)度。今天先學(xué)下setTimeout和setInterval的使用。

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

在node.js中可以使用node.js內(nèi)置的setTimeout(callback,delayMillSeconds,[args])方法。當(dāng)調(diào)用setTime()時(shí)回調(diào)函數(shù)會(huì)在delayMillSeconds后

執(zhí)行.setTime() 會(huì)返回一個(gè)定時(shí)器對(duì)象ID,可以在delayMillSeconds到期前將ID傳給clearTimeout(timeoutId)來(lái)取消。

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.js

Process finished with exit code 0

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

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js
myfunc

Process finished with exit code 0

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

間隔計(jì)時(shí)器用來(lái)按定期的時(shí)間間隔來(lái)執(zhí)行工作.和setTimeout類似,node.js中內(nèi)置setInterval(callback,delayMilliSecond,[args])來(lái)創(chuàng)建并返回定時(shí)器對(duì)象Id,通過clearInterval()來(lái)取消。

/**
 * 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);

上面代碼是創(chuàng)建setInterval的回調(diào)函數(shù)myfunc,參數(shù)為Interval,setInterval每隔1s執(zhí)行一次,setTimeout是在5秒之后執(zhí)行,它的回調(diào)函數(shù)讓間隔計(jì)時(shí)器取消。

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Interval.js
myfunc Interval
myfunc Interval
myfunc Interval
myfunc Interval

Process finished with exit code 0

三、從事件循環(huán)中取消定時(shí)器引用

當(dāng)事件隊(duì)列中僅存在定時(shí)器回調(diào)函數(shù)時(shí),如果不希望再執(zhí)行它們,可以使用setInterval和setTimeout返回對(duì)象的unref()函數(shù)來(lái)通知事件循環(huán)不要繼續(xù)。

當(dāng)unref()和setTimeout結(jié)合使用,要用獨(dú)立計(jì)時(shí)器來(lái)喚醒事件循環(huán),大量使用對(duì)性能也會(huì)產(chǎn)生影響,應(yīng)盡量少用。

四、setTimeout和setInterval執(zhí)行時(shí)間是不精確的

它們是間隔一定時(shí)間將回調(diào)添加到事件隊(duì)列中,執(zhí)行也不是太精確

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");

以上代碼多執(zhí)行幾次輸出的結(jié)果也是不一樣的。

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js
50MillSecond: 51ms
oneSecond: 1000ms
twoSecond: 2002ms
fiveSecond: 5001ms

Process finished with exit code 0

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)Node.js中setTimeout和setInterval的使用方法有所幫助。

相關(guān)文章

  • NodeJs測(cè)試框架Mocha的安裝與使用

    NodeJs測(cè)試框架Mocha的安裝與使用

    本文全面介紹如何使用Mocha,讓你輕松上手。如果你以前對(duì)測(cè)試一無(wú)所知,本文也可以當(dāng)作JavaScript單元測(cè)試入門。
    2017-03-03
  • 基于nodejs res.end和res.send的區(qū)別

    基于nodejs res.end和res.send的區(qū)別

    今天小編就為大家分享一篇基于nodejs res.end和res.send的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-05-05
  • 基于Nodejs利用socket.io實(shí)現(xiàn)多人聊天室

    基于Nodejs利用socket.io實(shí)現(xiàn)多人聊天室

    這篇文章講述了websocket無(wú)到有,根據(jù)協(xié)議,分析數(shù)據(jù)幀的頭,進(jìn)行構(gòu)建websocket。雖然代碼短,但可以很好地體現(xiàn)websocket的原理。對(duì)nodejs利用socket 實(shí)現(xiàn)多人聊天室功能感興趣的朋友一起看看吧
    2017-02-02
  • Nodejs使用mysql2操作數(shù)據(jù)庫(kù)的方法完整講解

    Nodejs使用mysql2操作數(shù)據(jù)庫(kù)的方法完整講解

    MySQL2是一個(gè)基于Node.js的MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,它是MySQL官方推薦的驅(qū)動(dòng)之一,下面這篇文章主要給大家介紹了關(guān)于Nodejs使用mysql2操作數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 在Node.js中將SVG圖像轉(zhuǎn)換為PNG,JPEG,TIFF,WEBP和HEIF格式的方法

    在Node.js中將SVG圖像轉(zhuǎn)換為PNG,JPEG,TIFF,WEBP和HEIF格式的方法

    這篇文章主要介紹了在Node.js中將SVG圖像轉(zhuǎn)換為PNG,JPEG,TIFF,WEBP和HEIF格式的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 使用Node.js在深度學(xué)習(xí)中做圖片預(yù)處理的方法

    使用Node.js在深度學(xué)習(xí)中做圖片預(yù)處理的方法

    這篇文章主要介紹了使用Node.js在深度學(xué)習(xí)中做圖片預(yù)處理的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 一文詳解node.js有哪些全局對(duì)象呢

    一文詳解node.js有哪些全局對(duì)象呢

    這篇文章主要介紹了一文詳解node.js有哪些全局對(duì)象呢,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • 淺談在node.js進(jìn)入文件目錄的問題

    淺談在node.js進(jìn)入文件目錄的問題

    今天小編就為大家分享一篇淺談在node.js進(jìn)入文件目錄的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-05-05
  • 關(guān)于Node.js的events.EventEmitter用法介紹

    關(guān)于Node.js的events.EventEmitter用法介紹

    本篇文章主要介紹了關(guān)于Node.js的events.EventEmitter用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • nodejs初步體驗(yàn)篇

    nodejs初步體驗(yàn)篇

    這篇文章主要介紹了nodejs初步體驗(yàn)篇的相關(guān)資料,需要的朋友可以參考下
    2015-11-11

最新評(píng)論