JavaScript console.log provoca un error: "Synchronous XMLHttpRequest en el hilo principal es deprecated..."
He estado añadiendo registros a la consola para comprobar el estado de diferentes variables sin usar el depurador de Firefox.
Sin embargo, en muchos lugares en los que añado un console.log
en mi archivo main.js
, recibo el siguiente error en lugar de mis encantadores mensajitos escritos a mano para mí:
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. Para más ayuda http://xhr.spec.whatwg.org/
¿Qué alternativas o envoltorios para console.log
puedo añadir a mi uso del código que no cause este error?
¿Estoy "haciendo mal"?
371
3
Esto me ocurrió cuando fui perezoso e incluí una etiqueta de script como parte del contenido que se devolvía. Así:
Contenido HTML parcial:
Parece, al menos en mi caso, que si devuelves contenido HTML como ese vía xhr, harás que jQuery haga una llamada para obtener ese script. Esa llamada ocurre con un flag async false ya que asume que necesitas el script para seguir cargando.
En situaciones como esta, sería mejor buscar un marco de vinculación de algún tipo y simplemente devolver un objeto JSON, o dependiendo de tu backend y plantillas podrías cambiar la forma de cargar tus scripts.
También puedes usar jQuery's
getScript()
para coger los scripts relevantes. Aquí hay un fiddle, es sólo una copia directa del ejemplo de jQuery, pero no veo ninguna advertencia cuando los scripts se cargan de esa manera.**Ejemplo
[http://jsfiddle.net/49tkL0qd/][1]
El mensaje de advertencia PUEDE SER debido a una solicitud XMLHttpRequest dentro del hilo principal con la bandera asíncrona establecida en falso.
https://xhr.spec.whatwg.org/#synchronous-flag:
La dirección futura es sólo permitir XMLHttpRequests en hilos de trabajo. El mensaje pretende ser una advertencia a tal efecto.
Yo también me enfrentaba al mismo problema pero pude solucionarlo poniendo async: true. Sé que por defecto es true pero funciona cuando lo escribo explícitamente