我目前正試圖重構我擁有的代碼庫,並希望擁有更開發人員友好的代碼庫。第一部分正在改變對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
})
在這裏你正在使用三個回調函數..將被稱爲? –
我剛剛編輯了這個問題。使情景更具說明性,你能否編輯你的答案來反映這一點。 –
我發現的第一種方法是令人沮喪,因爲它促進了回調中的回調,這是我不想要的。第二個是更通用的方法,需要使用閉包,在那裏我需要確保在所有連續鏈接函數中都有不同的變量。第三個適用於從兩個不同函數中獲取不同數據類型的情況。他們中沒有一個似乎足夠通用,但會在這個時間點完成。將繼續尋找更優雅的解決方案。如果找到將更新它。謝謝你的時間。非常感激。 –