Firebase запрос в реальном времени внутри карты - PullRequest
0 голосов
/ 04 мая 2020

У меня есть этот javascript код

monthly = 0
await Promise.all(
    second.map(uid => {
        firebase.database().ref('user').child(uid).once('value', u => {
            u = u.val()
            if (u.pack.name != 'no pack'){
                monthly = monthly + 10
            }else{
                monthly = monthly +3
            }
        })
    })
).then(() => {
    console.log(monthly)
}

Мне нужно использовать переменную ежемесячно в обратном вызове, но я всегда получаю «0» в качестве вывода

1 Ответ

0 голосов
/ 04 мая 2020

Вы ничего не возвращаете внутри карты, поэтому вы создаете массив undefined s, а не массив обещаний. Поэтому, когда вы делаете Promise.all и await его, вам нечего ждать.

monthly = 0
await Promise.all(
    second.map(uid => {
        // added a return
        return firebase.database().ref('user').child(uid).once('value', u => {
            u = u.val()
            if (u.pack.name != 'no pack'){
                monthly = monthly + 10
            }else{
                monthly = monthly +3
            }
        })
    })
)
console.log(monthly);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...