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

172
Vistas
¿Qué ventaja(s) ofrecen algunos métodos incorporados al tomar una devolución de llamada síncrona como argumento?

Estoy tratando de entender a fondo las devoluciones de llamadas y esta es la pieza fundamental que falta. Busqué en Internet esta respuesta, pero la mayoría solo habla de devoluciones de llamada asíncronas.

P 1: ¿Por qué algunos métodos integrados como Array.prototype.forEach() usan synchronous callbacks ? ¿Qué ventaja proporciona esta función?

P 2: ¿Cómo decidimos que es hora de usar una devolución de llamada síncrona al implementar nuestros propios métodos personalizados?

Fondo:

El bucle for of de javascript funcionalmente hace exactamente lo mismo que su contraparte forEach() cuando se habla de matrices. Ambos hacen un bucle desde el frente hasta el final de la matriz. Entonces, ¿por qué necesitamos ambos?

Dos diferencias obvias (en general) que veo son:

  1. for of loop puede recorrer cualquier iterable, forEach es específico para matrices.
  2. for of loop nos permite usar las palabras clave continue y break , forEach() no
  3. for of loop NO usa una devolución de llamada, forEach() usa una synchronous callback .

Veo la importancia de los puntos 1 y 2, pero no entiendo el punto 3

P: ¿Qué ventaja ofrece forEach() al tomar una devolución de llamada synchronous como argumento?

Una respuesta que no sea "nos permite aplicar una función a cada elemento" o nos permite "abstraer la lógica" sería realmente útil a menos que las respuestas sean realmente así de obvias y estoy pensando demasiado en esto.

Espero que mi pregunta sea inequívoca y súper clara.

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

0

Las devoluciones de llamada no son inherentemente síncronas o asíncronas. Una devolución de llamada es solo una función que se proporcionó como argumento a otra función.

Cuando se llama a esa devolución de llamada, está funcionando y, por lo general, algún otro evento lo precede. Si ese evento es en sí mismo asíncrono, entonces la llamada también es asíncrona.

Esto es completamente independiente de forEach y a for . La razón por la que ambos existen, es probablemente una combinación de lo siguiente:

  • for(.. of ..) no existió durante mucho tiempo, y for(.. in ..) tiene un comportamiento sorprendente relacionado con los prototipos. Esto llevó a que muchas bibliotecas implementaran un (for)each funcional, sobre todo jQuery.
  • Otra razón de la era jQuery por la que a la gente le gustaba jQuery each , es porque mucha gente se confundió sobre cómo se comportaban las variables en alcance/cierres y bucles. Hacer una versión funcional hace que sea mucho más fácil no sobrescribir las variables de cierre para iteraciones anteriores.
  • Por último, a algunas personas les gusta la idea de usar funciones para bucles.

Especialmente las dos primeras razones hicieron $.each popular, hasta el punto en que se agregó un forEach nativo al idioma.

Hay menos razones para usar forEach hoy, porque:

  • forEach no funciona con await .
  • Ahora tenemos let y const con ámbito de bloque, por lo que la sobrescritura de variables después de cada iteración del ciclo ya no es un problema.
  • for(... of ..) hace lo que la gente espera (sin necesidad de hasOwnProperty ).
  • No puedes 'romperte' con forEach

Algunas personas aún optan por usar forEach si las viñetas anteriores no son una preocupación. No entiendo completamente eso, pero realmente no puedes discutir el estilo.

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