es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Fallo de optimización en Firefox?

Recientemente, cuando hice algunos adventofcode, me encontré con un error:

El error ocurre en Firefox, excepto si ejecutas el código en varias partes, pero no ocurre en Chrome.

Cuando ejecuto este código en la consola de Firefox, en una pestaña con la URL https://www.google.com/robots.txt :

// Obtener entrada
var input = await fetch("https://www.google.com/robots.txt").then(r => r.text());

var lines = input.split("\n");

// Iterar
while (lines.length > 0) console.log(lines.shift());

No imprime nada, pero cuando ejecuto el código en dos partes (separadas por // Iterar) funciona. Ten en cuenta que puedes cambiar la URL de fetch y la URL de la pestaña, yo elegí robots.txt y las hice iguales para evitar errores de CORS.

¿Alguien sabe por qué ocurre esto o cómo solucionarlo?

Editar: El código funciona si lo envuelves en una función asíncrona y lo llamas, pero debería funcionar independientemente.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con la palabra clave await utilizada con la función fetch fuera de una función asíncrona. En Firefox, parece que el código se ejecuta de forma síncrona y evita que el resto del código se ejecute.

    Una solución para solucionar esto es envolver el código en una función asíncrona y llamarla. Otra solución podría ser usar una cadena .then() en lugar de la palabra clave await.

    async function fetchData() {
      // Obtener datos
      var input = await fetch("https://www.google.com/robots.txt").then(r => r.text());
    
      var lines = input.split("\n");
    
      // Iterar
      while (lines.length > 0) console.log(lines.shift());
    }
    
    fetchData();
    

    ¡Espero que esto sea de ayuda!

Comments are closed.