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" + textStatusfuente
->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