如何将callback作为parameter passing给另一个函数

我是新来的Ajax和callback函数,请原谅我,如果我得到的概念都是错误的。

问题:我可以将一个callback函数作为参数发送给另一个执行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); } 

对。 函数引用就像任何其他的对象引用,你可以将它们传递给你的内容。

这是一个更具体的例子:

 function foo() { alert("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!" 

现场示例

你也可以传入foo参数:

 function foo(a, b) { display(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" 

现场示例

另外,可以这样简单:

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

如果你的谷歌的javascript callback function example你会得到更好地了解JavaScript中的callback函数

这是如何做一个callback函数:

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

当然,function是对象,可以传递,但是当然你必须声明它:

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

一个有趣的事情是,你的callback函数也可以访问你可能已经在firstFunction()中声明的每个variables(在JavaScript中的variables有本地范围)。

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