Это потому, что вы никогда не возвращаете ничего из функции. Все, что он делает, это let
две переменные, а затем есть множество обратных вызовов от внутренних функций, которые не влияют на возвращение внешней функции. Оператор return workingbalance
просто возвращает это значение из внутренней лямбда-функции, которую вы передали тогда then
.
Вам нужно будет узнать, как обещания и цепочки обещаний работают в JavaScript, если вы хотите быть эффективными при асинхронном программировании. Если вы хотите передать это значение workingbalance
вызывающему, лучшее, что вы можете сделать, это вернуть всю цепочку обещаний и заставить вызывающего использовать then
в этом обещании для получения значения. Итак, это будет
return citiesRef.where(...).then(...).catch(...)