Должен ли я использовать частные свойства $$ состояние в $ q для моих нужд?

0

Используя угловой $ 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!');
   });
}

Это считается плохой практикой? Он будет делать то, что мне нужно, и мне не нравится использовать отдельную логическую переменную для выполнения задания. Насколько это приемлемо?

  • 0
    stackoverflow.com/questions/24091513/...
  • 0
    Вопрос не в том, как это сделать, а в том, считается ли это хорошей практикой.
Показать ещё 1 комментарий
Теги:
asynchronous
q

1 ответ

2
Лучший ответ

Префикс $$ name обозначает частную собственность/услугу, которая используется внутренне и может быть изменена без предварительного уведомления.

Из руководства:

Угловые префиксы $ и $$: во избежание случайных коллизий имен с вашим кодом, угловые префиксы имен общедоступных объектов с $ и именами частных объектов с $$. Пожалуйста, не используйте префикс $ или $$ в вашем коде

Маловероятно, что $q внесет изменения в $$state. Однако его использование указывает на то, что обещания не используются должным образом.

В этом случае это просто

$scope.click = function(){
   if (promise)
      return;

   promise = doAsyncAnimation().then(function(){
       console.log('hey, i\'m done!');
   })
   .finally(function () {
       promise = null;
   });
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню