Jquery在自定义函数中调用回调函数

时间:2011-10-23 14:42:50

标签: jquery function callback

我有一个自定义函数,我想添加一个回调函数,我查看了其他问题,但我找不到我的问题的答案。所以基本上它看起来像这样:

function myfunction() {
 // something 
}

我有一个不同的功能,我想触发它​​作为回调,最终我想这样调用myfunction:

myfunction(callback());

那么有人可以告诉我这样做吗?

4 个答案:

答案 0 :(得分:20)

你会这样称呼它(将回调函数作为参数传递):

 myfunction(myCallbackFn);

请注意,在将函数的引用作为参数传递时,函数名后面没有括号。这不会调用该函数,只是传递对它的引用,然后可以在自定义函数中调用它。

您将定义您的函数,然后在其中调用回调函数:

function myfunction(cb) {
    cb(arg1, arg2);
}

注意,有多种方法可以在自定义函数中实际调用回调函数。如果你只需要正常调用它而不关心this参数,你可以使用:

cb();

如果要将this参数设置为某个值,可以使用:

cb.call(thisArg, arg1, arg2);

如果你想传递你当前的参数或传递一个参数数组并设置this参数,你可以使用它:

cb.apply(thisArg, argArray);

.call().apply()上的参考文献。


您当前的代码在此区域中存在javascript错误:

test(rand_gyumolcs, link, callback){
    callback();
}; 

这不是合法的javascript。我不知道你要做什么,但这看起来像函数声明的一半和函数调用的一半。如果你只想调用测试函数,你可以使用它:

test(rand_gyumolcs, link, callback);

在测试中,如果你想在动画完成后调用回调函数,那么你必须挂钩动画的完成函数并调用回调。

答案 1 :(得分:7)

这是一个带回调值的回调示例,该回调值也是输入参数:

function test2(arg1, arg2, callback) {
  var result = callback(arg1, arg2);

  alert('arg1=' + arg1 + ', arg2=' + arg2 + ', result=' + result);
}

test2(1, 2, function(a, b) { return a + b; });

答案 2 :(得分:4)

function myfunction(callback) {
 // something

 callback();
}

myfunction(callback);

注意我没有调用回调,只是将它作为函数引用传递给我的函数。然后我在函数结尾或任何你想做的地方调用它。

答案 3 :(得分:0)

这是您可以在 javascript 中使用回调的另一种方法,此方法可确保您可以根据从回调中获得的结果安全地执行条件。

// Function call.

validateCondition(function(isValid){
   if(isValid) {
      executeThisFunction();
   } else {
     // Do something else.
   }
});


function validateCondition(callback) {
    var isvalid = true;
    
    // some calculation to check isValid.

    callback(isValid); 

}