Js定時任務

u014249394發表於2017-02-27
  • 介紹

文字介紹如何使用JS來定時呼叫函式,和Java中的定時任務不太一樣。 主要有兩個函式:定時執行、超時後執行,這兩個函式都屬於window物件。我們要關注兩個方面:如何啟動、如何停止,其實對任何定時任務都應該關心這兩個問題。
  • 定時

函式setTimeout的第一個引數是一個函式,第二個引數是單位為毫秒的時間。從呼叫setTimeout函式開始,時間超過後開始執行第一個引數的函式。 [codesyntax lang="javascript"]
window.setTimeout(function(){
	console.log('timeout execute!')
}, 3000);
[/codesyntax]
  • 超時

[codesyntax lang="javascript"]
window.setInterval(function(){
	console.log('timeout execute!')
}, 3000);
[/codesyntax]
  • 停止

setTimeout和setInterval函式都有一個number型別的返回值,想要停止函式執行的話,可以把該返回值分別傳遞給clearTimeout和clearInterval函式即可。
  • 定時函式引數

從上面的例子裡,我們可以看到,定時函式都是無引數的,如果確實需要引數的話,怎麼辦呢?下面給出一個示例: [codesyntax lang="javascript"]
function demoFn(name){
	console.log(name);
}
function _demoFn(name){
	return function(){
		demoFn(name);
	}
}
window.setInterval(_demoFn('timeout execute!'), 3000);
[/codesyntax] 其實,就是通過一個匿名函式來解決。

檢視原文:http://surenpi.com/2017/02/27/js_timing_task/