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



使用angular $q,我在质疑自己是否应该使用$$state私有属性来检查承诺的状态(检查它是pending还是completed)。

假设这样的情况:

var promise = undefined;
$scope.click = function(){
   if(promise != null && promise.$$state.status === 0)
      return;
   promise = doAsyncAnimation().then(function(){
       console.log('hey, i'm done!');
   });
}

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

$$名称前缀指定内部使用的私有属性/服务,可在不通知的情况下更改。

从手册:

Angular前缀$和$$:为了防止代码中意外的名称冲突,Angular会在公共对象的名称前加上$,在私有对象的名称前加上$$。请不要在代码中使用$或$$前缀

$q不太可能对$$state引入突破性的变化。然而,它的用法表明承诺没有被正确使用。

在这种情况下,它只是

$scope.click = function(){
   if (promise)
      return;
   promise = doAsyncAnimation().then(function(){
       console.log('hey, i'm done!');
   })
   .finally(function () {
       promise = null;
   });
}

最新更新