Vue2中的定時(shí)功能類似于瀏覽器中的setInterval()和setTimeout()函數(shù),可以對(duì)頁面中的元素或數(shù)據(jù)進(jìn)行周期性更新或延時(shí)操作。定時(shí)器是Vue2中非常常用的功能,亦是其強(qiáng)大的體現(xiàn)之一。
Vue2中的定時(shí)器主要包括兩個(gè)方法:setInterval()和setTimeout()。其中setInterval()方法會(huì)每隔一定時(shí)間執(zhí)行一次代碼,而setTimeout()方法則會(huì)在規(guī)定的時(shí)間后執(zhí)行一次代碼。
//setInterval()實(shí)例 var timer = setInterval(function(){ console.log('每2秒運(yùn)行一次'); },2000); //主動(dòng)停止定時(shí)器 // clearInterval(timer);
上述代碼表示每隔2秒執(zhí)行一次console.log()語句,即使窗口失去焦點(diǎn),該定時(shí)器也會(huì)一直運(yùn)行。可以使用clearInterval()方法停止該定時(shí)器。
//setTimeout()實(shí)例 setTimeout(function(){ console.log('三秒鐘后執(zhí)行一次'); }, 3000);
上述代碼表示等待3秒后執(zhí)行一次console.log()語句。
需要注意的是,Vue2中的定時(shí)器并不是完全依賴于瀏覽器的定時(shí)功能。Vue將定時(shí)器封裝成一個(gè)獨(dú)立的對(duì)象,在Vue中使用定時(shí)器不會(huì)受到瀏覽器頻率限制而失效,同時(shí)也可以在服務(wù)器端環(huán)境中使用。
除了使用setInterval()和setTimeout()方法之外,Vue2還提供了該框架自己的定時(shí)器組件,即interval和timer。這兩個(gè)組件與setInterval()和setTimeout()用法類似,但使用后代碼更加簡潔,且支持在模板中直接操作狀態(tài)。
//Vue定時(shí)器組件實(shí)現(xiàn)計(jì)數(shù):{{count}}
上面的代碼使用了Vue的定時(shí)器組件,實(shí)現(xiàn)了計(jì)數(shù)器的功能。計(jì)數(shù)器會(huì)每隔1秒鐘自動(dòng)加1,用戶也可以通過點(diǎn)擊啟動(dòng)和停止按鈕操作計(jì)數(shù)器。需要注意的是,interval組件返回的是一個(gè)定時(shí)器ID,需要通過該ID才可以停止定時(shí)器。
除了上述方法以外,Vue還提供了方便的時(shí)間格式化方法:$filters.date(). 該方法可以將時(shí)間戳格式化為指定的日期或時(shí)間格式,例如:
//時(shí)間格式化 {{ new Date() | date('YYYY-MM-DD HH:mm:ss') }}
上述代碼會(huì)將new Date()的輸出格式化為“YYYY-MM-DD HH:mm:ss”的格式。
總之,在Vue中使用定時(shí)器非常方便,無論是使用setInterval()和setTimeout()方法,還是使用Vue的定時(shí)器組件,都可以實(shí)現(xiàn)快速輕松地對(duì)頁面元素和數(shù)據(jù)進(jìn)行周期性更新或延時(shí)操作。值得注意的是,Vue的定時(shí)器更為強(qiáng)大且不受瀏覽器限制,甚至可以在服務(wù)器端環(huán)境中使用。