setTimeout no se llama en el kit de web android

En mi teléfono Android (2.1) estoy viendo un comportamiento extraño con setTimeout cuando mantengo un dedo presionado en la pantalla táctil durante un tiempo.

Este código muy simple, de hecho, funciona bien (1 llamada por segundo), hasta que me desplazo por un momento en la ventana (2-3 segundos son suficientes), cuando deja de ser llamado

$(document).ready(function(){ spam(); }); function spam(){ console.log("cia") setTimeout(spam, 1000); } 

Tengo el mismo problema.

La solución fue que yo definiera la función llamada como una variable, que pasar ist como parámetro al setTimeout.

Prueba esto:

 var spam = function(){ console.log("cia") setTimeout(spam, 1000); } $(document).ready(function(){ spam(); }); 

Tuve este problema antes en mi dispositivo cuando realizaba algún desarrollo pero ninguna de estas soluciones funcionó para mí.

A partir de la lectura que hice, está razonablemente bien documentado que esto sucede, pero no parece ser una forma consistente de resolverlo.

Lo que funcionó para mí fue cerrar la ventana. Tuve mi sitio de prueba hacia abajo, borrando el caché, saliendo del navegador, abriendo el administrador de tareas y cerrando el proceso. Cuando abrí mi navegador de nuevo y fui a mi sitio de prueba, el código estándar que originalmente había comenzado a trabajar de nuevo.

Mi única suposición es que el navegador mismo se mete en un estado extraño en el que no ejecuta las funciones estándar integradas del navegador (ni setTimeout () ni setInterval () funcionaron para mí, pero las dos funciones de JavaScript sí existían).

Estaba probando con un Samsung Galaxy S con Android 2.1, no sé si esto ayudará a alguien más, pero es lo que me funcionó.

prueba esto

  function spam(){ console.log("cia") setTimeout("spam()", 1000); } 

setTimeout:

  /** @param {String|Function} vCode @param {Number} iMillis @return Number */ window.setTimeout = function(vCode,iMillis) {}; 

Para mí, la respuesta de Varriotts no funcionó … la única manera de que setTimeout funcione en el teléfono Android que utilicé para probar (ejecutar v 2.something) es mediante la siguiente notación:

 function foo() {} window.setTimeout(foo, 200); 

Esto parece extraño, pasando solo el nombre de una función, pero después de horas de pruebas, fue la única forma en que funcionó.

Probé esto y resolví mi problema.

 setTimout(function(){aFunction(text);}, 200);