Pregunta

Estoy mostrando un conjunto de imágenes como una superposición usando Google Maps.La visualización de estas imágenes debería realizarse en un bucle sin fin, pero la mayoría de los navegadores lo detectan y muestran una advertencia.

¿Hay alguna manera de crear un bucle sin fin en JavaScript para que el navegador no lo detenga ni advierta?

¿Fue útil?

Solución

Intentar establecer intervalo o establecer tiempo de espera.

Aquí hay un ejemplo:

(show = (o) => setTimeout(() => {

  console.log(o)
  show(++o)

}, 1000))(1);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Otros consejos

Debes usar un temporizador para traer nuevas imágenes continuamente en lugar de un bucle infinito.Comprobar el setTimeout() función.La advertencia es que debes llamarlo en una función que se llama a sí misma, para que espere nuevamente.Ejemplo tomado de w3escuelas:

var c = 0
var t;

function timedCount() {
  document.getElementById('txt').value = c;
  c = c + 1;
  t = setTimeout("timedCount()", 1000);
}
<form>
  <input type="button" value="Start count!" onClick="timedCount()">
  <input type="text" id="txt">
</form>

El siguiente código establecerá un intervalo y establecerá la imagen en la siguiente imagen de una serie de fuentes de imágenes cada segundo.

function setImage(){
  var Static = arguments.callee;
  Static.currentImage = (Static.currentImage || 0);
  var elm = document.getElementById("imageContainer");
  elm.src = imageArray[Static.currentImage++];
}
imageInterval = setInterval(setImage, 1000);

En lugar de utilizar un bucle infinito, cree un temporizador que se siga activando cada n segundos; obtendrá el aspecto "ejecutar para siempre" sin que el navegador se cuelgue.

Quizás intente usar un temporizador que recupere la siguiente imagen cada vez que se ejecuta. Desafortunadamente, no conozco JavaScript, por lo que no puedo proporcionar un código de muestra.

Si se ajusta a tu caso, puedes seguir cargando nuevas imágenes para responder a la interacción del usuario, como este sitio web lo hace (simplemente desplácese hacia abajo).

Sólo una respuesta formal:

var i = 0;

while (i < 1) {
   do something...

   if (i < 1) i = 0;
   else i = fooling_function(i);  // must return 0
}

Creo que ningún navegador detectaría esas cosas.

function foo() {
  alert('hi');
  setTimeout(foo, 5000);
}

Luego simplemente usa una acción como "onload" para iniciar "foo"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top