【问题标题】:Call back function basics - javascript回调函数基础 - javascript
【发布时间】:2012-11-25 07:17:37
【问题描述】:

我需要写一个函数:

function doTestConnCall(param1, param2, callbackfun)

param1 & param2 是我在函数中使用的参数。 第三个参数-callbackfun是一个函数,在完成doTestConnCall后调用

  1. 如何做到这一点?
  2. 是否可以在单个方法中传递 2 个回调。说doTestConnCall(param1,callback1,callback2)

认为我缺少一些基础知识。谁能带领我

【问题讨论】:

标签: javascript callback


【解决方案1】:

你可以这样做:

callbackfun(argument1, argument2);

或:

callbackfun.apply(this, [ argument1, argument2 ]);

或:

callbackfun.call(this, argument1, argument2);

多个回调也可以做到这一点。例如:

callback1.call(this);
callback2.call(this);

见:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/apply

还有:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/call

【讨论】:

    【解决方案2】:

    JS 中的函数是顶级结构。这意味着function hello() {}var hello = function() {}; 相同。所以如果你想将hello传递给上面的函数,你可以在定义hello()之后调用doTestConnCall(param1, param2, hello)

    【讨论】:

      【解决方案3】:

      这就是你实现它的方式。

      可以将任何你想要的作为方法参数传递。

      function doTestConnCall(param1, param2, callbackfun){
         DO YOUR LOGIC
         callbackfun() // CALL YOUR CALLBACK
      }
      

      【讨论】:

        【解决方案4】:
        1. 在您正在编写的函数中,在适当的时候调用任何回调 - 在您描述的情况下,在它完成其核心工作之后。

        2. 是的,当然。一个接一个地叫他们。

          function multipleCallbacks(arg, arg, callback1, callback2) {
              // Do some stuff
          
              // Do error checking in the real world if you need to be tolerant
              callback1();
              callback2();   
          }
          

        【讨论】:

        • @musa 感谢您的编辑,我试图修复它,但有时降价是邪恶的。坦率地说,我看不出你输入的内容与我所做的不同,但你能做什么。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 2015-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多