IO.js Timers

2018-11-28 22:35 更新

穩(wěn)定度: 3 - 鎖定

所有的定時(shí)器函數(shù)都是全局的。當(dāng)需要使用它們時(shí),不必通過(guò)require()

setTimeout(callback, delay[, arg][, ...])

在指定的延時(shí)(毫秒)后執(zhí)行一次回調(diào)函數(shù)。返回一個(gè)可以被調(diào)用clearTimeout()timeoutObject??蛇x的,你可以傳遞回調(diào)函數(shù)的參數(shù)。

需要注意的是,你的回調(diào)函數(shù)可以不會(huì)在精確的在指定的毫秒延時(shí)后執(zhí)行 - io.js對(duì)回調(diào)函數(shù)執(zhí)行的精確時(shí)間以及順序都不作保證。回調(diào)函數(shù)的執(zhí)行點(diǎn)會(huì)盡量接近指定的延時(shí)。

clearTimeout(timeoutObject)

阻止一個(gè)timeout的觸發(fā)。

setInterval(callback, delay[, arg][, ...])

在每次到達(dá)了指定的延時(shí)后,都重復(fù)執(zhí)行回調(diào)函數(shù)。返回一個(gè)可以被調(diào)用clearInterval()intervalObject??蛇x的,你可以傳遞回調(diào)函數(shù)的參數(shù)。

clearInterval(intervalObject)

阻止一個(gè)interval的觸發(fā)。

unref()

setTimeoutsetInterval的返回值也有一個(gè)timer.unref()方法,這個(gè)方法允許你創(chuàng)建一個(gè) 當(dāng)它是事件循環(huán)中的僅剩項(xiàng)時(shí),它不會(huì)保持程序繼續(xù)運(yùn)行 的定時(shí)器。如果一個(gè)定時(shí)器已經(jīng)被unref,再次調(diào)用unref不會(huì)有任何效果。

setTimeout的情況下,當(dāng)你調(diào)用unref時(shí),你創(chuàng)建了一個(gè)將會(huì)喚醒事件循環(huán)的另一個(gè)定時(shí)器。創(chuàng)建太多這樣的定時(shí)器會(huì)影響時(shí)間循環(huán)的性能 -- 請(qǐng)明智地使用。

ref()

如果你先前對(duì)一個(gè)定時(shí)器調(diào)用了unref(),你可以調(diào)用ref()來(lái)明確要求定時(shí)器要保持程序運(yùn)行。如果一個(gè)定時(shí)器已經(jīng)被ref,再次調(diào)用ref不會(huì)有任何效果。

setImmediate(callback[, arg][, ...])

在下一次I/O事件循環(huán)后,在setTimeoutsetInterval前,“立刻”執(zhí)行回調(diào)函數(shù)。返回一個(gè)可以被clearImmediate()immediateObject。可選的,你可以傳遞回調(diào)函數(shù)的參數(shù)。

setImmediate創(chuàng)建的回調(diào)函數(shù)會(huì)被有序地排隊(duì)。每一次事件循環(huán)迭代時(shí),整個(gè)回調(diào)函數(shù)隊(duì)列都會(huì)被處理。如果你在一個(gè)執(zhí)行中的回調(diào)函數(shù)里調(diào)用了setImmediate,那么這個(gè)setImmediate中的回調(diào)函數(shù)會(huì)在下一次事件循環(huán)迭代時(shí)被調(diào)用。

clearImmediate(immediateObject)

阻止一個(gè)immediate的觸發(fā)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)