Detener la llamada setInterval en JavaScript
estoy usandosetInterval(fname, 10000);
para llamar a una función cada 10 segundos en JavaScript. ¿Es posible dejar de convocarlo en algún evento?
Quiero que el usuario pueda detener la actualización repetida de datos.
setInterval()
devuelve un ID de intervalo, que puede pasar a clearInterval()
:
var refreshIntervalId = setInterval(fname, 10000);
/* later */
clearInterval(refreshIntervalId);
Consulte los documentos para setInterval()
y clearInterval()
.
Si establece el valor de retorno de setInterval
en una variable, puede utilizarlo clearInterval
para detenerlo.
var myTimer = setInterval(...);
clearInterval(myTimer);
Puede configurar una nueva variable e incrementarla en ++ (cuenta uno) cada vez que se ejecuta, luego uso una declaración condicional para finalizarla:
var intervalId = null;
var varCounter = 0;
var varName = function(){
if(varCounter <= 10) {
varCounter++;
/* your code goes here */
} else {
clearInterval(intervalId);
}
};
$(document).ready(function(){
intervalId = setInterval(varName, 10000);
});
Espero que te ayude y sea correcto.
Ya respondí... Pero si necesita un temporizador reutilizable y destacado que también admita múltiples tareas en diferentes intervalos, puede usar mi TaskTimer (para Node y navegador).
// Timer with 1000ms (1 second) base interval resolution.
const timer = new TaskTimer(1000);
// Add task(s) based on tick intervals.
timer.add({
id: 'job1', // unique id of the task
tickInterval: 5, // run every 5 ticks (5 x interval = 5000 ms)
totalRuns: 10, // run 10 times only. (omit for unlimited times)
callback(task) {
// code to be executed on each run
console.log(task.name + ' task has run ' + task.currentRuns + ' times.');
// stop the timer anytime you like
if (someCondition()) timer.stop();
// or simply remove this task if you have others
if (someCondition()) timer.remove(task.id);
}
});
// Start the timer
timer.start();
En su caso, cuando los usuarios hacen clic para interrumpir la actualización de datos; También puede llamar timer.pause()
si timer.resume()
necesitan volver a habilitarlo.
Ver más aquí .
En nodeJS puedes usar la palabra clave especial " this " dentro de la función setInterval.
Puede usar esta palabra clave para borrar Intervalo, y aquí hay un ejemplo:
setInterval(
function clear() {
clearInterval(this)
return clear;
}()
, 1000)
Cuando imprime el valor de esta palabra clave especial dentro de la función, genera un objeto de tiempo de espera Timeout {...}