Javascript 如何将回调作为参数传递给另一个函数
我不熟悉ajax和回调函数,如果我的概念都错了,请原谅 问题:是否可以将callbackfunction作为参数发送给另一个将执行回调的函数Javascript 如何将回调作为参数传递给另一个函数,javascript,ajax,callback,call,Javascript,Ajax,Callback,Call,我不熟悉ajax和回调函数,如果我的概念都错了,请原谅 问题:是否可以将callbackfunction作为参数发送给另一个将执行回调的函数 function firstFunction(){ //some code //a callback function is written for $.post() to execute secondFunction("var1","var2",callbackfunction); } function secondFunct
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);
}
是的。函数引用与任何其他对象引用一样,您可以将它们传递到您的内心深处 这里有一个更具体的例子:
函数foo(){
log(“来自foo的你好!”);
}
函数调用方(f){
//调用给定的函数
f();
}
函数间接调用方(f){
//打电话给主叫人,主叫人再打电话给f`
呼叫者(f);
}
//做吧
间接调用方(foo);//日志“Hello from foo!”
是的,当然,函数是对象,可以传递,但您必须声明它:
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);
}
有趣的是,您的回调函数还可以访问您可能在firstFunction()中声明的每个变量(javascript中的变量具有局部作用域)。如果您搜索
javascript回调函数示例,您将获得
以下是如何执行回调函数:
function f() {
alert('f was called!');
}
function callFunction(func) {
func();
}
callFunction(f);
此外,也可以简单为:
if( typeof foo == "function" )
foo();
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
您可以像这样使用JavaScript CallBak:
var a;
function function1(callback) {
console.log("First comeplete");
a = "Some value";
callback();
}
function function2(){
console.log("Second comeplete:", a);
}
function1(function2);
或Java脚本承诺:
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");
});
可能与javascript中的->
意思重复?@这里没有什么特别的->
只是一个正常的函数var test=function(str,callback){ajax call}
@shenkwen A thin arrow->是CoffeeScript语法,而不是JavaScript,在编译成JavaScript时只是表示一个普通的JavaScript函数。JavaScript具有类似的箭头函数