0
以下是訪問Firebase數據表單的工作代碼。它使用全局變量'Data'數組將它發送給最終的回調函數。 但我不想聲明全局變量。那麼無論如何,我可以將我的數據傳遞給每個回調後?下面是代碼。在Node.js中的其他承諾函數中訪問firebase fireproof promise局部變量 - 避免全局性
var data = {};
getData('myKey', function(){
console.log("myCompleteData: "+ data); //both Id and finalData
});
var getData= function(key,callback) {
return fireproof.child("data").child(key)
.then(CUSTOM_getData)
.then(callback)
}
function CUSTOM_getData(snapshot) {
var id= snapshot.val().id;
data.id= id;
return {
then: function(callback) {
fireproof.child("otherData").child(data.id)
.then(CUSTOM_getSomethingFromId)
.then(callback)
}
};
}
function CUSTOM_getSomethingFromId(snapshot) {
var finalData = snapshot.val().finalData;
data.finalData = finalData;
return {
then: function(callback) {
callback(data);
}
};
}
而我是Node.js的新手。所以,請讓我知道,如果這種做法是正確的:)
爲什麼你滾你自己的諾言:o? –
這樣我就可以將變量傳遞給前一個回調函數。但我知道這種做法是不正確的。我解決了這個問題。請在下面查看我的代碼。 P.S:我是Node.js的新手 –
您的「新代碼」仍然不正確。不要推出自己的承諾實現,這確實很難 - 例如,如果您的承諾被傳遞到某處調用'then'回調並將承諾作爲其返回值 - 您的代碼行爲不正確。也就是說 - 如果你滾動「然後」,你必須展示一個完整的承諾impl。 –