1

特定の方法でコールバックをネストする方法を見つけようとしています。

var alpha = function(callback){
    var x = 5;
    if(x > 2){
        callback();
    }else if(x = 10){
        callback();
    }else{
        future();
    }
};

var beta = function(callback){
    var x = 5;
    if(x > 10){
        callback();
    }
}

alpha(function(){
    beta(function(){
      // also run future();
    }); 
});

future()ベータ版callback()と同じものにするか、少なくとも両方で同じコードを実行したいとしましょう。どうすればそれを実現できますか?私の初歩的な>例は無視してください。

コードをよりドライにしようとしています。beta は内部で複数回実行されますalpha()が、future()関数は既に beta のコールバックに追いついています。

アップデート

こんな余計なことは避けたい。

var alpha = function(callback){
    var x = 5;
    if(x > 2){
        //---       
        var x = 5;
        if(x > 10){
            callback();
        }
        //---
    }else if(x = 10){
        //---
        var x = 5;
        if(x > 10){
            callback();
        }
        //---
    }else{
        callback();
    }
};
4

2 に答える 2

1

コードで 2 つのコールバック関数を受け入れることができます。また、名前付き関数 (または変数) を定義してベータ コールバックで使用することもできます。

var alpha = function(callback, callback2){
    var x = 5;
    if(x > 2){
        callback();
    }else if(x = 10){
        callback();
    }else{
        callback2();
    }
};

var beta = function(callback){
    var x = 5;
    if(x > 10){
        callback();
    }
}

alpha(function(){
        beta(function(){
           future();
        }); 
    }, function future(){
    // your code here
});
于 2012-11-17T11:31:09.730 に答える
0

私があなたを正しく理解しているかどうかはわかりませんが、もしそうなら、あなたの問題は、両方のコールバック内で特定の動作を呼び出したいということです。これを行うには、その動作を外側のコールバックに渡し、追加のパラメーターとして内側のコールバックに渡します。

var alpha = function(future, callback) {
    [...]
    else if(x == 10) {
        callback(future); // Where callback would be beta
    } else {
        future();
    }
}

alpha(future, function(future) {
    beta(function() {
        future();
    });
}
于 2012-11-17T11:33:07.973 に答える