1

estoy tratando de entender como funcionan las funciones callback y las funciones flechas y para eso he estado intentando convertir esta función en 2 funciones 'SEPARADAS' y que una llame a la otra, pero hasta ahora sin poder lograrlo. he visto ejemplo con solo 1 parámetro, desconozco si es que realmente se puede hacer con 2 parámetros. muchas gracias.

let array = function (a, b) {
  return a.filter(x => b.indexOf(x) === -1);
};
console.log(array([1, 2, 2], [2]));
Triby
  • 23,274
  • 3
  • 13
  • 35
  • 1
    Me encantaría ayudarte con esta pregunta Nelson, me recuerda a mi mismo tratando de comprender este tipo de conceptos. Sería de mucha ayuda que escribas las 2 funciones **por separado** y nos cuentes cuál es el comportamiento esperado y qué planeas hacer con más detalle; porque siendo honesto me cuesta entenderte y poder ver en dónde está el problema. Con estos detalles con gusto de doy una respuesta concisa para que aprendas. También te recomiendo que leas [esto](https://es.stackoverflow.com/questions/277690/qu%c3%a9-diferencias-hay-entre-callbacks-promises-y-async-await/277693#277693). – FranAcuna Feb 12 '21 at 19:31

1 Answers1

3

No hay necesidad de enredarse tanto, de hecho tienes un error de conceptos, puesto que una funcion callback y una funcion flecha son realmente lo mismo, de hecho comparar ambas es absurdo, ademas normalmente nunca se dice:

funcion callback, se dice simplemente callback.

Y ojo, antes de que me quemen en la hoguera por decir que una funcion callback y una funcion flecha son lo mismo, yo a lo que me refiero cuando digo que son iguales NO me refiero a su funcion NI su forma de usarse, si no a la concepcion de funciones como tal, es decir, quizas hayas pensado en algun momento algo asi como que callback y funcion flechas son tipos de funciones distintos entre si, lo cual es erroneo.

Para que aquellos usuarios mas avanzados me entiendan realmente lo que trato de decir, es por ejemplo si nosotros hacemos una comparacion entre una funcion:

function mi_funcion(){
   //Codigo
}

Y un generador:

function* mi generador(){
   //Codigo
}

Estos dos conceptos SI son de diferentes casos, pues un generador esta diseñado para usarse de otra manera diferente a las funciones comunes.

Aqui lo que realmente difiere entre callback, una funcion y una funcion flecha es la forma de su utilización, aunque para el caso de la funcion y funcion flecha hay otra distincion mas que hacer, y es que una funcion normal tiene contexto (puedes usar this), una funcion flecha NO tiene contexto, this nunca hara alusion a la funcion flecha.

Pues el concepto de callback es tan sencillo de definir como esto:

callback: funcion que es pasada como parametro a otra funcion.

Ahora bien, ten en cuenta que segun esta definicion NO le puedes llamar callback a una funcion normal como es esta:

function mi_funcion(){
   
}

mi_funcion();

Esto debido a que no cumple dos de los requisitos:

  • La funcion no recibe ningun callback
  • A la funcion no se le pasa otra funcion

Ahora bien, ten en cuenta que podemos realizar callbacks tanto usando funciones flecha como funciones normales.

entonces cual seria un ejemplo de callback en este caso?

Con tu ejemplo no es posible hacer un callback, por este motivo creare un pequeño ejemplo acerca de callbacks:

window.onload = () => {
 
  //Callback
  function sayHiBeforeHello(){
    console.log("Hi!");
  }
  
  //Funcion que recibe y ejecuta el callback
  function sayHello(callback){
    callback();
    console.log("Hello world!");
  }
  
  //Ejecucion del callback
  sayHello(sayHiBeforeHello);

}

Este mismo ejemplo aplica a las funciones flechas, aqui el mismo ejemplo pero con funciones flecha:

window.onload = () => {
 
  //Callback (flecha)
  const sayHiBeforeHello = () => console.log("Hi!");
  
  //Funcion flecha que recibe y ejecuta el callback
  const sayHello = callback => {
    callback();
    console.log("Hello world!");
  }
  
  //Ejecucion del callback
  sayHello(sayHiBeforeHello);

}

Ahora bien, hay que tener cuidado con los callbacks ya que como curiosidad tenemos algo llamado callback hell que se ve mas o menos asi:

CallbackHell

Porsupuesto nunca se debe llegar a tener un callback hell y de hecho actualmente existe algo llamado promises que evitan el uso excesivo de callbacks para no caer en el callback hell, el infierno de los callbacks.

Espero haya quedado lo mas claro posible esto de los callbacks.

Riven
  • 5,728
  • 2
  • 7
  • 27