Autor Tema: setTimeout  (Leído 1014 veces)

Desconectado lorddelioncourt

  • PHPerit@
  • *
  • Mensajes: 17
  • Karma: 0
  • Sexo: Masculino
  • Nuev@ PHPer@
    • Ver Perfil
setTimeout
« 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.


Bebe de mi y vive Eternamente

Comunidad PHPeros

setTimeout
« en: 04 de Diciembre de 2012, 01:49:31 am »

Desconectado ilovepixel

  • PHPer@ Fijo
  • ***
  • Mensajes: 149
  • Karma: 9
  • Sexo: Masculino
  • Game Artist & Developer
    • Ver Perfil
    • i ■ pixel
Re:setTimeout
« Respuesta #1 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);

Desconectado lorddelioncourt

  • PHPerit@
  • *
  • Mensajes: 17
  • Karma: 0
  • Sexo: Masculino
  • Nuev@ PHPer@
    • Ver Perfil
Re:setTimeout
« Respuesta #2 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
Bebe de mi y vive Eternamente

Desconectado ilovepixel

  • PHPer@ Fijo
  • ***
  • Mensajes: 149
  • Karma: 9
  • Sexo: Masculino
  • Game Artist & Developer
    • Ver Perfil
    • i ■ pixel
Re:setTimeout
« Respuesta #3 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);

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:setTimeout
« Respuesta #4 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?

Desconectado Void

  • PHPerit@
  • *
  • Mensajes: 7
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:setTimeout
« Respuesta #5 en: 31 de Enero de 2013, 19:38:12 pm »
Prueba con esto:

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