Todo lo que necesito hacer es ejecutar una función de devolución de llamada cuando finalice la ejecución de mi función actual.
function LoadData()
{
alert('The data has been loaded');
//Call my callback with parameters. For example,
//callback(loadedData , currentObject);
}
Un consumidor para esta función debería ser así:
object.LoadData(success);
function success(loadedData , currentObject)
{
//Todo: some action here
}
¿Cómo implemento esto?
javascript
Amgad Fahmi
fuente
fuente
object.LoadData(success)
la llamada debe ser posterior a lafunction success
definición. De lo contrario, recibirá un error que le indicará que la función no está definida.Respuestas:
En realidad, su código funcionará tal cual, simplemente declare su devolución de llamada como argumento y puede llamarlo directamente usando el nombre del argumento.
Los basicos
Eso llamará
doSomething
, lo que llamaráfoo
, lo que alertará "las cosas van aquí".Tenga en cuenta que es muy importante pasar la referencia de función (
foo
), en lugar de llamar a la función y pasar su resultado (foo()
). En su pregunta, lo hace correctamente, pero vale la pena señalarlo porque es un error común.Cosas más avanzadas
A veces desea llamar a la devolución de llamada para que vea un valor específico para
this
. Puede hacerlo fácilmente con lacall
función de JavaScript :También puedes pasar argumentos:
A veces es útil pasar los argumentos que desea dar la devolución de llamada como una matriz, en lugar de individualmente. Puedes usar
apply
para hacer eso:fuente
setTimeout()
. La respuesta es envolver la devolución de llamada en un cierre:doSomething(function(){foo('this','should','work')})
Es una buena práctica asegurarse de que la devolución de llamada sea una función real antes de intentar ejecutarla:
fuente
if(typeof callback == "function")
Tendrá el mismo resultado.callback &&
...Mi 2 centavo Lo mismo pero diferente...
fuente
fuente
==============================================
==============================================
El resultado es:
fuente
Si desea ejecutar una función cuando se hace algo. Una de las buenas soluciones es escuchar eventos. Por ejemplo, implementaré a
Dispatcher
, unaDispatcherEvent
clase con ES6, luego:Despachador:
DispatcherEvent:
¡Feliz codificación!
p / s: falta mi código para manejar algunas excepciones de error
fuente
fuente
Al llamar a la función de devolución de llamada, podríamos usarla como a continuación:
consumingFunction(callbackFunctionName)
Ejemplo:
Este es el Codepend con el ejemplo completo.
fuente
Algunas de las respuestas, aunque correctas, pueden ser un poco difíciles de entender. Aquí hay un ejemplo en términos simples:
La devolución de llamada significa que "Jake" siempre se agrega a los usuarios antes de mostrar la lista de usuarios con
console.log
.Fuente (YouTube)
fuente
Tratar:
Las funciones son de primera clase en JavaScript ; puedes pasarlos por ahí.
fuente