Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将回调作为参数传递给另一个函数_Javascript_Ajax_Callback_Call - Fatal编程技术网

Javascript 如何将回调作为参数传递给另一个函数

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

我不熟悉ajax和回调函数,如果我的概念都错了,请原谅

问题:是否可以将callbackfunction作为参数发送给另一个将执行回调的函数

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具有类似的箭头函数