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

我正在尝试使我的代码更干燥。可以说 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 个回调函数,也可以定义命名函数(或变量)并在 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
});
于 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 回答