使用角度$ 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 :(得分: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;
});
}