Soy nuevo en las funciones de devolución de llamada y ajax, por favor perdóneme si entiendo mal los conceptos.
Problema: ¿Puedo enviar una función de devolución de llamada como parámetro a otra función que ejecutará la devolución de llamada?
function firstFunction(){
//some code
//a callback function is written for $.post() to execute
secondFunction("var1","var2",callbackfunction);
}
function secondFunction(var1, var2, callbackfunction) {
params={}
if (event != null) params = event + '&' + $(form).serialize();
// $.post() will execute the callback function
$.post(form.action,params, callbackfunction);
}
javascript
ajax
callback
call
Wee Kiat
fuente
fuente
Respuestas:
Sip. Las referencias de función son como cualquier otra referencia de objeto, puede pasarlas al contenido de su corazón.
Aquí hay un ejemplo más concreto:
function foo() { console.log("Hello from foo!"); } function caller(f) { // Call the given function f(); } function indirectCaller(f) { // Call `caller`, who will in turn call `f` caller(f); } // Do it indirectCaller(foo); // alerts "Hello from foo!"
También puede pasar argumentos para
foo
:function foo(a, b) { console.log(a + " + " + b + " = " + (a + b)); } function caller(f, v1, v2) { // Call the given function f(v1, v2); } function indirectCaller(f, v1, v2) { // Call `caller`, who will in turn call `f` caller(f, v1, v2); } // Do it indirectCaller(foo, 1, 2); // alerts "1 + 2 = 3"
fuente
Además, podría ser tan simple como:
if( typeof foo == "function" ) foo();
fuente
Si busca en Google
javascript callback function example
, obtendrá una mejor comprensión de las funciones de devolución de llamada en JavaScriptAsí es como se hace una función de devolución de llamada:
function f() { alert('f was called!'); } function callFunction(func) { func(); } callFunction(f);
fuente
Sí, por supuesto, las funciones son objetos y se pueden pasar, pero, por supuesto, debes declararlo:
function firstFunction(){ //some code var callbackfunction = function(data){ //do something with the data returned from the ajax request } //a callback function is written for $.post() to execute secondFunction("var1","var2",callbackfunction); }
una cosa interesante es que su función de devolución de llamada también tiene acceso a todas las variables que haya declarado dentro de firstFunction () (las variables en javascript tienen alcance local).
fuente
Ejemplo para
CoffeeScript
:test = (str, callback) -> data = "Input values" $.ajax type: "post" url: "http://www.mydomain.com/ajaxscript" data: data success: callback test (data, textStatus, xhr) -> alert data + "\t" + textStatus
fuente
->
significa en javascript? @ nothing-special-here->
es solo una función normal.var test = function(str, callback) { ajax call }
Puede usar JavaScript CallBak así:
var a; function function1(callback) { console.log("First comeplete"); a = "Some value"; callback(); } function function2(){ console.log("Second comeplete:", a); } function1(function2);
O Promesa de Java Script:
let promise = new Promise(function(resolve, reject) { // do function1 job let a = "Your assign value" resolve(a); }); promise.then( function(a) { // do function2 job with function1 return value; console.log("Second comeplete:", a); }, function(error) { console.log("Error found"); });
fuente