Используя угловой $ q, я задаюсь вопросом, должен ли я использовать приватные свойства штата $$ для проверки состояния обещания (чтобы проверить, ожидает ли он или завершено).
Предполагая такую ситуацию:
var promise = undefined;
$scope.click = function(){
if(promise != null && promise.$$state.status === 0)
return;
promise = doAsyncAnimation().then(function(){
console.log('hey, i'm done!');
});
}
Это считается плохой практикой? Он будет делать то, что мне нужно, и мне не нравится использовать отдельную логическую переменную для выполнения задания. Насколько это приемлемо?
Префикс $$
name обозначает частную собственность/услугу, которая используется внутренне и может быть изменена без предварительного уведомления.
Из руководства:
Угловые префиксы $ и $$: во избежание случайных коллизий имен с вашим кодом, угловые префиксы имен общедоступных объектов с $ и именами частных объектов с $$. Пожалуйста, не используйте префикс $ или $$ в вашем коде
Маловероятно, что $q
внесет изменения в $$state
. Однако его использование указывает на то, что обещания не используются должным образом.
В этом случае это просто
$scope.click = function(){
if (promise)
return;
promise = doAsyncAnimation().then(function(){
console.log('hey, i\'m done!');
})
.finally(function () {
promise = null;
});
}