如何将附加变量传递到Firebase promise';Javascript中的回调?

如何将附加变量传递到Firebase promise';Javascript中的回调?,javascript,callback,promise,Javascript,Callback,Promise,我们正试图通过promise的回调将其他变量传递到Firebase.ON。 我们已经看了几十篇关于SO的文章,这些文章描述了如何将静态变量传递到.on方法的回调函数中,但是每个版本都为我们抛出了一个data.val()未定义错误 下面是示例代码。我们希望为i传递一个值: var path = firebase.database().ref(our_firebase_data_url); var fx = function fx_call(data) { value = data.val(

我们正试图通过promise的回调将其他变量传递到Firebase.ON。 我们已经看了几十篇关于SO的文章,这些文章描述了如何将静态变量传递到.on方法的回调函数中,但是每个版本都为我们抛出了一个data.val()未定义错误

下面是示例代码。我们希望为i传递一个值:

var path = firebase.database().ref(our_firebase_data_url);
var fx = function fx_call(data) {
    value = data.val();
    console.log("Here is your passed parameter: " + i); // we want this defined 
};
path.on('value', fx);
我们认为我们可能可以做这样的事情,但我们无法让这方面的变化发挥作用:

fx_call(data,i) { 
     value = data.val();
     i = i.val(); 
};
或者,看起来我们可以通过.bind语句传入值:

fx_call(data,i) { 
     value = data.val();
     i = i.val(); 
}.bind(this, i) # we also tried .bind(null,i) and .bind(i)
但我们在多个SO帖子(、和其他帖子)中尝试的每一种方法都会导致data.val()未定义错误


我们如何将额外的变量参数传递给promise的回调?

我们在SO之外找到了一个答案,因此我们要求并回答将其添加到这里

您可以使用以下格式的.bind语句将变量传递到函数中,包括Firebase promise回调:

 fx_call(data,i) { 
         value = data.val();
         i = this.i; # this is how you access the value from the bind
         j = this.j; 
 }.bind( {i: i, j: 10} ) # this is how you pass variables into the callback function...this.i will be whatever value the scope of i was at the time the function was created...this.j in this case will be 10

您也可以在函数的顶部设置
var i=5,j=10
——我一定错过了question@JaromandaX整数只是实际变量的占位符。答案修改为用i表示。非常感谢:)您也可以像这样做。on('value',function(data){…something}.bind({something}));