0

我有两个函数,将其中一个作为参数传递,例如:

var a = function(f)
{
  // some code
  f();
};

var b = function()
{
};

a(b); // works great, the function a is executed, then the function b is executed

现在我需要将它扩展到树函数,例如:

var a = function(f)
{
  // some code
  f();
};

var b = function(f)
{
  // some code
  f();
};

var c = function()
{
};

a(b(c)); // but it does not work. b(c) words like a method and get executed right on the instruction.

我怎样才能做到这一点?

4

4 回答 4

3

传递一个执行的包装函数b(c)

a(function() {
    b(c);
});
于 2012-04-13T17:47:24.060 回答
2

听起来您想使用回调类型的模式。您可以执行以下操作,而不是简单地传递函数的结果:

var a = function(callback)
{
    // Do Stuff
    callback();
}

var b = function(callback)
{
    // Do Stuff
    callback();
}

var c = function() { }

您的代码最终看起来像这样:

a(function()
{
   b(function()
   {
       c();
   });
});

实际上,您在方法完成后传递另一个函数来执行。在上述场景中,我只是提供了两个匿名函数作为回调参数。

于 2012-04-13T17:47:31.840 回答
1
function a(f){
  // code
  f()
}
function b(f){
  // code
  a(f())
}
function c(){
  //code
}

b(c);
于 2012-04-13T17:47:57.193 回答
1

一种方法是使用匿名函数:

a(function() { b(c); });
于 2012-04-13T17:48:02.573 回答