簡體   English   中英

Firebase-即使值未定義,方法也會返回未定義

[英]Firebase - method returns undefined even though value is not undefined

我使用Firebase API編寫了一種方法,該方法應返回一些數字的平均值。 該方法在大多數情況下都有效,但返回時失敗。 我的alert(sum)返回正確答案,但是由於某種原因該方法返回undefined。

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。但是,當我將該變量設置為等於此方法的結果時,它將其值更改為undefined。

.once('value')是一個異步函數。 您在其中的return語句不是針對returnAverage函數,而是作為.once('value')的第二個參數傳遞的內部函數。 例如,嘗試以下操作:

function returnAverage ( keyName )
{
  myDataRef.child(keyDictionary[keyName]).once( 'value', function(dataSnapshot) {
    ...
  }
  return 10;
}

您會看到該變量將被賦值為10。

基本問題是必須從服務器檢索該值,這需要一些時間。 檢索值后,您需要調用自己的函數以執行所需的任何操作,或使用“ promise”(請參見http://www.promisejs.org/ )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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