Comunidad PHPeros

Lenguajes => JavaScript => Mensaje iniciado por: lorddelioncourt en 04 de Diciembre de 2012, 01:49:31 am

Título: setTimeout
Publicado por: lorddelioncourt en 04 de Diciembre de 2012, 01:49:31 am
Necesito de su ayuda, tengo una funcion con un setTimeout, lo que necesito es que cada 5 minutos se ejecute una funcion.
Lo hice de esta forma:
Código: [Seleccionar]
function contador(tiempo)
{
    t = parseInt(tiempo);
    if (t == 10000)
    {
        autosave();
        t = 0;
    }
    else
    {
        t = t + 1000;
        setTimeout(contador(t),1000);
    }

esa funcion la llamo en el load asi contador('0');

pero no me funciona ya que se ejecuta la funcion autosave() al instante de haber cargado la pagina.

Me podrian ayudar???
Gracias de antemano.


Título: Re:setTimeout
Publicado por: ilovepixel en 04 de Diciembre de 2012, 03:24:13 am
Prueba cambiando:
Código: [Seleccionar]
setTimeout(contador(t),1000);

a

Código: [Seleccionar]
setTimeout('contador('+t+')',1000);
Título: Re:setTimeout
Publicado por: lorddelioncourt en 04 de Diciembre de 2012, 22:11:46 pm
al parecer no es eso sino la funcion setTimeout ya que lo hice de la siguiente manera y aun asi no funciona
Código: [Seleccionar]
function contador()
{
autosave();
setTimeout("contador()",300000);
}


y en onload llamo a la funcion contador, pero no se respeta el intervalo de tiempo no se que estoy haciendo mal
Título: Re:setTimeout
Publicado por: ilovepixel en 04 de Diciembre de 2012, 23:48:12 pm
En esa función está inmediatamente llamando a autosave, tienes que crear una función que inicie el timer y otra que se encargue de llamar autosave cada vez que termine el timer.

Código: [Seleccionar]
function autosave()
{
//función de autosave.
console.log("autosave");
}

/**
* @param minutes Cada cuantos minutos quieres
*    que se llame la autosave.
*/
function autoSaveTimer(minutes)
{
var delay = parseInt((minutes*60)*1000);
var t = setTimeout("timer("+delay+")",delay);
t = delay = null;
}

function timer(delay)
{
autosave();
var t = setTimeout("timer("+delay+")",delay);
t = null;
}

window.onload = autoSaveTimer(1);
Título: Re:setTimeout
Publicado por: westwest en 27 de Diciembre de 2012, 18:01:21 pm
Por qué no cambias la función autosave añadiendo setTimeout(autosave, 300000); al final de dicha función?
Título: Re:setTimeout
Publicado por: Void en 31 de Enero de 2013, 19:38:12 pm
Prueba con esto:

Código: [Seleccionar]
setTimeout('contador(t)', 1000);