![](/img/trans.png)
[英]Firebase's Realtime Database's event listener's handler executes itself infinitely
[英]In Firebase's Realtime Database, how can I pass my own arguments to an event listener's callback?
以下是您為實時數據庫事件編寫偵聽器的方式的偽代碼。
function callbackA(snapshot) {
console.log(snapshot.val());
}
route.on('value', callbackA);
現在想象一下,我想將一些 arguments 傳遞給 callbackA,以便 callbackA 看起來像這樣:
function callbackA(snapshot, myParam1, myParam2) {
console.log(snapshot.val());
console.log(myParam1);
console.log(myParam2);
}
我該怎么做(不破壞 firebase 自動為我們提供的第一個參數)?
您無法更改 Firebase SDK 傳遞給回調 ZC1C425268E17985D1AB5074 的 arguments。 它總是試圖傳遞一個參數:快照。
相反,您可以簡單地在回調的 scope 中將值作為變量提供,然后直接訪問它們。
const myParam1 = ...
const myParam2 = ...
function callbackA(snapshot) {
console.log(snapshot.val());
console.log(myParam1)
console.log(myParam2)
}
或者您可以使用function currying創建一個新的 function 作為回調傳遞。 它可能 go 是這樣的(這個未經測試的代碼 - 在這里使用你的最佳判斷):
function callbackA(myParam1, myParam2) {
return function(snapshot) {
console.log(snapshot.val());
}
}
const callbackB = callbackA("value-for-myparam1", "value-for-myparam2")
route.on('value', callbackB);
在調用 Firebase SDK 之前,您顯然需要知道參數的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.