How to pass a callback as a parameter into another function

后端 未结 6 1713
生来不讨喜
生来不讨喜 2020-11-28 03:32

I\'m new to ajax and callback functions, please forgive me if i get the concepts all wrong.

Problem: Could i send a callbackfunction

相关标签:
6条回答
  • 2020-11-28 03:58

    Also, could be simple as:

    if( typeof foo == "function" )
        foo();
    
    0 讨论(0)
  • 2020-11-28 04:07

    Yup. Function references are just like any other object reference, you can pass them around to your heart's content.

    Here's a more concrete example:

    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!"

    You can also pass in arguments for 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"

    0 讨论(0)
  • 2020-11-28 04:13

    Yes of course, function are objects and can be passed, but of course you must declare it:

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

    an interesting thing is that your callback function has also access to every variable you might have declared inside firstFunction() (variables in javascript have local scope).

    0 讨论(0)
  • 2020-11-28 04:13

    Example for 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
    
    0 讨论(0)
  • 2020-11-28 04:13

    You can use JavaScript CallBak like this:

    var a;
    
    function function1(callback) {
     console.log("First comeplete");
     a = "Some value";
     callback();
    }
    function function2(){
     console.log("Second comeplete:", a);
    }
    
    
    function1(function2);
    

    Or Java Script Promise:

    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");
    });
    
    0 讨论(0)
  • 2020-11-28 04:17

    If you google for javascript callback function example you will get Getting a better understanding of callback functions in JavaScript

    This is how to do a callback function:

    function f() {
        alert('f was called!');
    }
    
    function callFunction(func) {
        func();
    }
    
    callFunction(f);
    
    0 讨论(0)
提交回复
热议问题