Получить значение из функции - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть фрагмент базы данных, подобный этому:

{
  "users": {
    "usersCount": {
      "count": 61
     ...
     ...
    }
  }
}

Я хочу присвоить значение переменной следующим образом:

var count = getUserCount();

Из этой функции:

function getUsersCount() {
    const ref = db.ref('users/usersCount');
    ref.once("value", function (snapshot) {
        console.log("Value is: ", snapshot.val().count); // There value is right
        return snapshot.val().count;
    }, function (errorObject) {
        console.log("The read failed: " + errorObject.code);
    });
}

Но что бы я ни пытался, функция возвращает undefinde или обещание объекта

1 Ответ

0 голосов
/ 02 апреля 2020

Поскольку Once () является асинхронным, невозможно заставить getUsersCount возвращать значение синхронно. Он должен будет вернуть обещание, которое соответствует значению, которое вы хотите, чтобы вызывающий абонент имел. Это должно выглядеть так:

function getUsersCount() {
    const ref = db.ref('users/usersCount');
    return ref.once("value")
    .then(snapshot => {
        console.log("Value is: ", snapshot.val().count); // There value is right
        return snapshot.val().count;
    })
}

И вызывающая сторона использует возвращенное обещание, как это:

getUsersCount()
.then(count => {
    console.log("Count", count);
})
.catch(error => {
    console.log("The read failed", error);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...