最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

快速掌握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,通過(guò)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)文章

  • 快速搭建Node.js(Express)用戶注冊(cè)、登錄以及授權(quán)的方法

    快速搭建Node.js(Express)用戶注冊(cè)、登錄以及授權(quán)的方法

    這篇文章主要介紹了快速搭建Node.js(Express)用戶注冊(cè)、登錄以及授權(quán),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • express如何使用session與cookie的方法

    express如何使用session與cookie的方法

    本篇文章主要介紹了express如何使用session與cookie的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 使用node操作SQLite的方法

    使用node操作SQLite的方法

    SQLite是一種輕量級(jí)的嵌入式關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它以庫(kù)的形式存在,可以嵌入到應(yīng)用程序中,使用Node.js操作SQLite數(shù)據(jù)庫(kù)有多種方式,其中常用的方式包括使用sqlite3模塊、sequelize模塊和knex模塊,本文將詳細(xì)的給大家介紹這幾種方式,需要的朋友可以參考下
    2023-10-10
  • 從零學(xué)習(xí)node.js之詳解異步控制工具async(八)

    從零學(xué)習(xí)node.js之詳解異步控制工具async(八)

    sync是一個(gè)流程控制工具包,提供了直接而強(qiáng)大的異步功能?;贘avaScript為Node.js設(shè)計(jì),同時(shí)也可以直接在瀏覽器中使用。下面這篇文章主要介紹了node.js之異步控制工具async的相關(guān)資料,需要的朋友可以參考下。
    2017-02-02
  • Node.js JSON模塊用法實(shí)例分析

    Node.js JSON模塊用法實(shí)例分析

    這篇文章主要介紹了Node.js JSON模塊用法,結(jié)合實(shí)例形式分析了node.js json模塊的基本語(yǔ)法,以及使用json模塊進(jìn)行json格式數(shù)據(jù)解析的相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Node事件的監(jiān)聽與觸發(fā)的實(shí)現(xiàn)

    Node事件的監(jiān)聽與觸發(fā)的實(shí)現(xiàn)

    Node.js是由事件驅(qū)動(dòng)的,每個(gè)任務(wù)都可以當(dāng)作一個(gè)事件來(lái)處理,本文主要介紹了Node事件的監(jiān)聽與觸發(fā)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • 如何自定義node版本,實(shí)現(xiàn)node多版本控制方式

    如何自定義node版本,實(shí)現(xiàn)node多版本控制方式

    這篇文章主要介紹了如何自定義node版本,實(shí)現(xiàn)node多版本控制方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 淺談如何把Node項(xiàng)目部署到服務(wù)器上

    淺談如何把Node項(xiàng)目部署到服務(wù)器上

    本文主要介紹了淺談如何把Node項(xiàng)目部署到服務(wù)器上,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • nodejs一個(gè)簡(jiǎn)單的文件服務(wù)器的創(chuàng)建方法

    nodejs一個(gè)簡(jiǎn)單的文件服務(wù)器的創(chuàng)建方法

    這篇文章主要介紹了nodejs一個(gè)簡(jiǎn)單的文件服務(wù)器的創(chuàng)建方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Node.js基礎(chǔ)入門之回調(diào)函數(shù)及異步與同步詳解

    Node.js基礎(chǔ)入門之回調(diào)函數(shù)及異步與同步詳解

    Node.js是一個(gè)基于Chrome?V8引擎的JavaScript運(yùn)行時(shí)。類似于Java中的JRE,.Net中的CLR。本文將詳細(xì)為大家介紹Node.js中的回調(diào)函數(shù)及異步與同步,感興趣的可以了解一下
    2022-03-03

最新評(píng)論

绥滨县| 巴马| 昭苏县| 新建县| 远安县| 乃东县| 阳高县| 大化| 鄂尔多斯市| 和硕县| 云林县| 白玉县| 兴义市| 永寿县| 大足县| 霍州市| 辽阳市| 兴山县| 监利县| 阳原县| 香河县| 汝南县| 大洼县| 凤庆县| 新乡市| 互助| 城固县| 双辽市| 侯马市| 图木舒克市| 肇源县| 斗六市| 台江县| 忻城县| 华安县| 沛县| 布尔津县| 郯城县| 佛山市| 文登市| 新和县|