簡體   English   中英

在 Firebase 的實時數據庫中,如何將自己的 arguments 傳遞給事件偵聽器的回調?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM