Chiamare una funzione ogni 60 secondi

Utilizzando setTimeout() è ansible avviare una funzione in un momento specifico:

 setTimeout(function, 60000); 

Ma cosa succede se mi piacerebbe lanciare la funzione più volte? Ogni volta che passa un intervallo di tempo, vorrei eseguire la funzione (ogni 60 secondi, diciamo).

Se non ti interessa se il codice all’interno del timer può richiedere più tempo dell’intervallo, usa setInterval() :

 setInterval(function, delay) 

Ciò triggers la funzione passata come primo parametro più e più volte.

Un approccio migliore consiste nell’usare setTimeout insieme a una funzione self-executing anonymous autoeseguibile:

 (function(){ // do some stuff setTimeout(arguments.callee, 60000); })(); 

ciò garantisce che la prossima chiamata non viene effettuata prima dell’esecuzione del codice. Ho usato arguments.callee in questo esempio come riferimento di funzione. È un modo migliore per dare un nome alla funzione e chiamarla all’interno di setTimeout perché arguments.callee è deprecato in ecmascript 5.

Usa il

 setInterval(function, 60000); 

EDIT: (Nel caso in cui si voglia fermare l’orologio dopo che è stato avviato)

Sezione Script

  

e codice HTML

  Stop 

Un uso migliore della risposta di jAndy per implementare una funzione di polling che esegue il polling di ogni interval secondi e termina dopo un timeout secondi.

 function pollFunc(fn, timeout, interval) { var startTime = (new Date()).getTime(); interval = interval || 1000; (function p() { fn(); if (((new Date).getTime() - startTime ) < = timeout) { setTimeout(p, interval); } })(); } pollFunc(sendHeartBeat, 60000, 1000); 

AGGIORNARE

Come da commento, aggiornandolo per la capacità della funzione passata di interrompere il polling:

 function pollFunc(fn, timeout, interval) { var startTime = (new Date()).getTime(); interval = interval || 1000, canPoll = true; (function p() { canPoll = ((new Date).getTime() - startTime ) < = timeout; if (!fn() && canPoll) { // ensures the function exucutes setTimeout(p, interval); } })(); } pollFunc(sendHeartBeat, 60000, 1000); function sendHeartBeat(params) { ... ... if (receivedData) { // no need to execute further return true; // or false, change the IIFE inside condition accordingly. } } 

In jQuery puoi fare così.

 function random_no(){ var ran=Math.random(); jQuery('#random_no_container').html(ran); } window.setInterval(function(){ /// call your function here random_no(); }, 6000); // Change Interval here to test. For eg: 5000 for 5 sec 
  
Hello. Here you can see random numbers after every 6 sec
 setInterval(fn,time) 

è il metodo che cerchi.

Usa window.setInterval(func, time) .

Puoi semplicemente chiamare setTimeout alla fine della funzione. Questo lo aggiungerà di nuovo alla coda degli eventi. È ansible utilizzare qualsiasi tipo di logica per variare i valori di ritardo. Per esempio,

 function multiStep() { // do some work here blah_blah_whatever(); var newtime = 60000; if (!requestStop) { setTimeout(multiStep, newtime); } } 

Ci sono 2 modi per chiamare-

  1. setInterval(function (){ functionName();}, 60000);

  2. setInterval(functionName, 60000);

la funzione precedente chiamerà ogni 60 secondi.