Tomemos este ejemplo:
function foo(callback){ callback(); baz(); } function baz() { console.log('Hello from baz'); } foo(baz);Parece que están haciendo la misma tarea. ¿O la devolución de llamada y llamar a una función dentro de otra función son lo mismo?
Básicamente, están haciendo lo mismo, pero las devoluciones de llamada son muy útiles porque puede llamar a la misma función con muchas devoluciones de llamada diferentes. Eso hace que tu función foo sea más reutilizable.
Excepto que no está utilizando la devolución de llamada de la forma en que se supone que deben usarse las devoluciones de llamada. Se supone que las devoluciones de llamada obtienen los resultados provisionales de una función anterior. aquí hay un ejemplo
function add (a, b) { return a + b; } function subtract (a, b) { return a - b; }Esta es la devolución de llamada
function doLater (val) { if (val > 0) { console.log("positive"); } else if (val ==) { console.log("zero"); } else console.log ("negative"); } function doOp (a, b, mathOp, callback) { var res = mathOp(a,b); callback(res); } doOp (2,3, add, doLater);contra
doOp (2,3,subtract, doLater);En su ejemplo, ambos enfoques harán lo mismo.
Sin embargo, puede pasar la función como parámetros, que no están en el alcance de las funciones. P.ej
function foo(callbackFn){ callbackFn(); // function test is undefined here, since it was declared in another scope } function bar(){ // test is only available in bar's scope function test(){ console.log("test"); } foo(bar); }