如何将附加变量传递到Firebase promise';Javascript中的回调?
我们正试图通过promise的回调将其他变量传递到Firebase.ON。 我们已经看了几十篇关于SO的文章,这些文章描述了如何将静态变量传递到.on方法的回调函数中,但是每个版本都为我们抛出了一个data.val()未定义错误 下面是示例代码。我们希望为i传递一个值:如何将附加变量传递到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(
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}));