我试图弄清楚如何以某种方式嵌套回调。
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();
}
};
答案 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();
});
}