Come passare una richiamata come parametro in un’altra funzione

Sono nuovo per le funzioni Ajax e Callback, ti ​​prego perdonami se ho sbagliato i concetti.

Problema: potrei inviare una callbackfunction come parametro ad un’altra funzione che eseguirà il callback?

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); } 

Sì. I riferimenti alle funzioni sono come qualsiasi altro riferimento a un object, puoi passarli al contenuto del tuo cuore.

Ecco un esempio più 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!" 

Inoltre, potrebbe essere semplice come:

 if( typeof foo == "function" ) foo(); 

Se utilizzi google per l’ javascript callback function example , otterrai una migliore comprensione delle funzioni di callback in JavaScript

Ecco come eseguire una funzione di callback:

 function f() { alert('f was called!'); } function callFunction(func) { func(); } callFunction(f); 

Sì, certo, le funzioni sono oggetti e possono essere passati, ma ovviamente devi dichiararlo:

 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 interessante è che la funzione di callback ha anche accesso a tutte le variabili che potresti aver dichiarato all’interno di firstFunction () (le variabili in javascript hanno scope locale).

Esempio per 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