0

次のように、2つの関数を取得し、そのうちの1つをパラメーターとして渡します。

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

事実上、メソッドが終了した後に実行する別の関数を渡します。上記のシナリオでは、コールバック引数として2つの無名関数を指定するだけです。

于 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

1つの方法は、無名関数を使用することです。

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