Javascript Firebase-方法返回undefined,即使值未定义
我使用Firebase API编写了一个方法,该方法应该返回一些数字的平均值。该方法在大部分情况下有效,但在返回时失败。My alert(sum)返回正确答案,但由于某些原因,该方法返回undefinedJavascript Firebase-方法返回undefined,即使值未定义,javascript,jquery,firebase,Javascript,Jquery,Firebase,我使用Firebase API编写了一个方法,该方法应该返回一些数字的平均值。该方法在大部分情况下有效,但在返回时失败。My alert(sum)返回正确答案,但由于某些原因,该方法返回undefined function returnAverage ( keyName ) { myDataRef.child(keyDictionary[keyName]).once( 'value', function(dataSnapshot) { tempPermArray
function returnAverage ( keyName )
{
myDataRef.child(keyDictionary[keyName]).once( 'value', function(dataSnapshot)
{
tempPermArray = dataSnapshot.val();
var data = dataSnapshot.val();
var sum = 0;
for ( var entry in data['submissions'] )
{
sum += parseInt(data['submissions'][entry][0]);
}
sum /= returnSize(data['submissions']);
alert( sum );
return sum;
});
}
当我在控制台中创建一个新变量并将其设置为0时,它返回0。但是,当我将该变量设置为该方法的结果时,它会将其值更改为未定义 .once('value')
是一个异步函数。其中的return
语句不是用于returnAverage
函数,而是作为第二个参数传递给.once('value')
的内部函数。例如,尝试以下方法:
function returnAverage ( keyName )
{
myDataRef.child(keyDictionary[keyName]).once( 'value', function(dataSnapshot) {
...
}
return 10;
}
您将看到变量将被赋值为10
基本问题是必须从服务器检索值,这需要一点时间。在检索到值后,您需要调用自己的函数,以便对其执行任何操作,或者使用“承诺”(请参阅)