嵌套回调未来/现在

时间:2012-11-17 11:16:24

标签: javascript callback

我试图弄清楚如何以某种方式嵌套回调。

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()和beta版callback()是相同的,或者至少在两者中运行相同的代码。我该如何做到这一点?请忽略我的基本>示例。

我正试图让我的代码更干燥。让我们说测试版在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();
    }
};

2 个答案:

答案 0 :(得分:1)

您可以在代码中接受2个回调函数,也可以定义命名函数(或变量)并在beta回调中使用它

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

答案 1 :(得分: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();
    });
}