【问题标题】:Jquery calling a callback function in a custom functionJquery在自定义函数中调用回调函数
【发布时间】:2011-10-23 14:42:50
【问题描述】:

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

function myfunction() {
 // something 
}

我有一个不同的函数,我想作为回调触发,最终我想像这样调用 myfunction:

myfunction(callback());

那么谁能告诉我如何做到这一点?

【问题讨论】:

    标签: jquery function callback


    【解决方案1】:

    你可以这样调用它(将回调函数作为参数传递):

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

    在test里面,如果想在动画完成后调用回调函数,那么你就得钩住动画的完成函数,然后调用回调。

    【讨论】:

    • 似乎对我不起作用 jfriend00 ...这可能是我的错误,但你能看看吗?我知道代码有点乱,我不太擅长 jquery...ridewithus.co.cc/test
    • 如果你能看到..我想让右边的水果移动,测试函数会这样做,但我还有一个回调函数应该将它们移回原来的位置跨度>
    • 请在您的原始问题中发布相关代码,或者非常具体地描述代码在您的页面中的位置以及如何触发它。您发布了一个包含五个嵌入式脚本页面的网页,我不知道您要问的是哪段代码。
    • 你的权利,我很抱歉,但代码有点长,还是要发布它,谢谢......
    • 动画完成后唯一可以调用的地方是使用动画的completion function。查看doc for the jQuery animate function,你会看到最后一个参数是一个回调函数,当动画完成时会被调用。您需要将该回调函数作为参数提供给您的gyum_mozgas2 函数,然后将其传递给该函数中的.animate() 调用。 animate() 函数将在动画完成时调用它。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
      function myfunction(callback) {
       // something
      
       callback();
      }
      
      myfunction(callback);
      

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

      【讨论】:

      • @Keith...您需要在声明 myfunction 时传递需要运行的实际函数:即 myfunction(function(){ alert "hello";});不是我的函数(回调);
      【解决方案4】:

      这是您在 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); 
      
      }
      

      【讨论】:

        猜你喜欢
        • 2014-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-27
        相关资源
        最近更新 更多