我应该在$ q中使用私有属性$$状态来满足我的需求吗?

时间:2016-08-19 14:52:20

标签: javascript angularjs asynchronous q

使用角度$ 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!');
   });
}

这被认为是一种不好的做法?它会完全符合我的需要,我不喜欢使用单独的布尔变量来完成工作。 它有多少合格?

1 个答案:

答案 0 :(得分:2)

$$名称前缀指定在内部使用的私有财产/服务,如有更改,恕不另行通知。

来自the manual

  

Angular Prefixes $和$$:为了防止与您的代码意外发生名称冲突,Angular将带有$的公共对象的名称和带有$$的私有对象的名称作为前缀。请不要在代码中使用$或$$前缀

$q不太可能对$$state引入重大变化。但是,它的用法表明未正确使用承诺。

在这种情况下,它只是

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

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