2016-01-08 361 views
1

例如:如何在jQuery中閒置10秒後執行函數?

其實如何在系統空閒的情況下每10s執行一次函數。

例子:

setInterval(function() { 
     test(); 
     },10000); 
//for every 10 Sec 

我要找如果系統空閒10秒。請幫我解決我的問題。

+0

你將如何識別嘗試這個 - 呼叫功能'系統idle'是第一個問題在這裏.. –

+0

是否有可能找到系統空閒,,就像在jquery –

+0

檢查https://github.com/kidh0/jquery.idle鼠標和鍵盤沒有運動 – Shelvin

回答

5

檢查mousemovekeyupkeypress事件上document並致電您的settimeoutcleartimeout內部的,如下:

var interval; 
$(document).on('mousemove keyup keypress',function(){ 
    clearTimeout(interval);//clear it as soon as any event occurs 
    //do any process and then call the function again 
    settimeout();//call it again 
}) 

function settimeout(){ 
    interval=setTimeout(function(){ 
    alert("Idle for 10s"); 
    },10000) 
} 

DEMO

0

試試這個

setTimeout(function() { test(); }, 10000); 
+0

僅有代碼的答案很可能對未來的訪問者甚至OP本人無益。考慮編輯你的答案以包含代碼的解釋。 – Magisch

1

setInterval的是使用功能,但如果你只運行在系統空閒時,你需要重新設置時間間隔,每當別的東西發生。

所以你:

timeout = setTimeout(function() { test();},10000); 

如果有些事情發生,你做

clearTimeout(timeout); //clear the timeout 
//do stuff; 
timeout = setTimeout(function() { test();},10000); //and re-activate it when done 

或者更一般地說:

var myVar; 

function myFunction() { 
    myVar = setTimeout(function(){ test(); }, 3000); 
} 

function myStopFunction() { 
    clearTimeout(myVar); 
} 
0

在任何情況下,你認爲有用的

function test(){  
    // Use your code here... 
} 
setTimeout(test, 10000); 
+0

只有代碼答案很可能對未來的訪問者甚至OP本人無益。考慮編輯你的答案以包含代碼的解釋。 – Magisch