Detener la llamada setInterval en JavaScript

Resuelto cnu asked hace 16 años • 9 respuestas

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.

cnu avatar Sep 21 '08 02:09 cnu
Aceptado

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().

John Millikin avatar Sep 20 '2008 19:09 John Millikin

Si establece el valor de retorno de setIntervalen una variable, puede utilizarlo clearIntervalpara detenerlo.

var myTimer = setInterval(...);
clearInterval(myTimer);
Quintin Robinson avatar Sep 20 '2008 19:09 Quintin Robinson

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.

OMGrant avatar May 16 '2010 14:05 OMGrant

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í .

Onur Yıldırım avatar Aug 23 '2016 15:08 Onur Yıldırım

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 {...}

assayag.org avatar Sep 14 '2020 22:09 assayag.org