Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

108
Vistas
¿La cola de microtareas tiene más prioridad que la cola de macrotareas?

Si Microtask Queue tiene más prioridad que Macrotask Queue, ¿por qué el orden de los registros de la consola es

  • scriptStart
  • scriptEnd
  • setTimeout
  • Response

en vez de

  • scriptStart
  • scriptEnd
  • Response
  • setTimeout

dado que for(let i=0;i<100000000;i++){ const start = Date.now(); } toma suficiente tiempo para mantener ocupado el subproceso principal, hasta que llega la respuesta de fetch?

Código completo

 console.log("scriptStart") setTimeout(() => { console.log("setTimeout"); }, 0); fetch("https://jsonplaceholder.typicode.com/todos/1").then(() => { console.log('Response'); }); for (let i = 0; i < 100000000; i++) { const start = Date.now(); } console.log("scriptEnd")

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Como puede ver en la pestaña Red del depurador, la solicitud al servidor comienza solo cuando se libera el hilo (el ciclo finaliza). Entonces, mientras fetch recibe datos del servidor, setTimeout tiene tiempo para hacerlo.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Porque el intérprete es de subproceso único. Parece que estás confundiendo tareas con hilos. Ellos no son. Son solo una lista vinculada de devoluciones de llamada.

El intérprete funciona así:

 START │ ▼ execute javascript │ ▼ Event loop ┌──────────┐ │ │ │ │ │ ▼ │ check if there's any ─────────▶ handle event │ event completion │ │ │ │ │ ▼ │ │ check if we need to execute ◀─────────┘ │ any javascript in ───────────────▶ execute │ the microtask list javascript │ │ │ │ ▼ │ │ check if we need to execute ◀─────────┘ │ any javascript in ───────────────▶ execute │ the macrotask list javascript │ │ │ │ │ │ └────◀─────┴─────────────────◀──────────────────┘

Son todos bucles. Nada corre en paralelo. Entonces, mientras esté ejecutando javascript, no está ingresando al ciclo de eventos.

Nota: si está utilizando worker_threads o webworkers, esa es una historia diferente porque realmente generan hilos.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda