Вы проверяете, инициализирован ли промис. Если да - отдаете его. Если нет - выполняете запрос, получаете промис и отдаете его. В данном случае не важно, разрешился ли уже промис или ещё нет.
Андрей: по поводу _ - это уже от вашего styleguide зависит. Ведь фактических ограничений это никаких не даёт. Ну и инкапсуляцией по этим же причинам это не обзавешь. Но да, идея в том, чтобы сделать удобный entrypoint для работы с API модуля. Т.е. чтобы при работе с модулем не приходилось каждый раз заходить в него и смотреть какие же параметры нужны для методаN.
В языке, который поддерживает области видимости как правило вызываемые функции - приватные. Но всё зависит от модуля. И фасад может быть не один, иногда делают разные фасады разбивая API на какие-то логические части. Всё очень условно и нужно исходить из здравого смысла.
Я подозреваю что у вас стоит html5mode(false)
вам нужно установить правильно вот эти параметры: https://docs.angularjs.org/api/ng/provider/$locati...
$locationProvider.html5mode(true) - должен решить проблему.
По дефолту ангуляр использует # для отделения SPA части от реального route, т.е path начинается после #.
Что значит созданную юзером? Само по себе ничего не создается. Если вам нужно создать точку при клике на карту - вам нужно событие click на карте. map.dragend - конечно не функция. Посмотрите в документации, как вешать события.
Валерий Чупурнов: дело в том, что если вы например захотите сделать вашу часть кода каким-то отдельным бандлом - jslint сломается. У вас появились неявные зависимости. Это не "официальный хак", хак - это что-то плохое, а здесь - нормальный workflow. Как, когда был es5 необходимо было сообщать о глобальных переменных, если они были.