【发布时间】:2017-04-28 09:58:46
【问题描述】:
在我的应用程序中,我有一个异步返回缓存值的服务:
.service('StateService', [
'$q',
function ($q) {
var value;
// ...
// ...
function getValue() {
return $q.when(value);
}
// ...
// ...
return {
getValue: getValue
// ...
// ...
};
}
]);
静态变量“值”通过同一服务中的设置器进行更新。
需要有异步工作的 getter getValue() - 这个想法是在未来实现一个 id 缓存。
在主控制器中,我需要将$watch 更改为StateService.getValue() 并使用新的value 更新范围(如果已更改)。
$watch 承诺(实际上不是资源调用,而只是包装在承诺中的静态值)是否有可能与$scope.$watch 一起使用?
也许通过在每个摘要中展开它们并将旧值与新值进行比较?
【问题讨论】:
-
另一种方法是在缓存更改时引发一个事件,并让您的控制器侦听此事件而不是查看缓存?
-
请说明应该如何使用它,没有足够的信息。 getValue 没有理由成为一个承诺。如果它应该是异步的,请显示出来。似乎您正在尝试将承诺用于他们从未打算过的事情。考虑改用 observables(例如 RxJS)。
-
您的异步 API 是执行一次还是多次回调? Promise 是未来返回的 一次性 值的容器。观察者多次执行他们的回调。
标签: javascript angularjs promise angular-promise angular-services