使用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;
});
}