我目前正试图重构我拥有的代码库,并希望拥有更开发人员友好的代码库。第一部分正在改变对Promises的回调。目前,在一些地方,我们使用Async.waterfall来压扁回调地狱,这对我很有用。我们不能,是因为他们是有条件的回调余缺,这意味着内部不同的回调函数if和else如何在NodeJS中使用Promises(Bluebird)处理条件回调
if(x){
call_this_callback()
}else{
call_other_callback()
}
现在我用的蓝鸟在node.js中的承诺,我无法弄清楚如何处理有条件的回调来平抑回调地狱。
编辑 更现实的情况下,考虑到我没有得到问题的关键。
var promise = Collection1.find({
condn: true
}).exec()
promise.then(function(val) {
if(val){
return gotoStep2();
}else{
return createItem();
}
})
.then(function (res){
//I don't know which response I am getting Is it the promise of gotoStep2
//or from the createItem because in both the different database is going
//to be called. How do I handle this
})
在这里你正在使用三个回调函数..将被称为? –
我刚刚编辑了这个问题。使情景更具说明性,你能否编辑你的答案来反映这一点。 –
我发现的第一种方法是令人沮丧,因为它促进了回调中的回调,这是我不想要的。第二个是更通用的方法,需要使用闭包,在那里我需要确保在所有连续链接函数中都有不同的变量。第三个适用于从两个不同函数中获取不同数据类型的情况。他们中没有一个似乎足够通用,但会在这个时间点完成。将继续寻找更优雅的解决方案。如果找到将更新它。谢谢你的时间。非常感激。 –