【问题标题】:$scope.$watch value wrapped in in promise $q.when(value)$scope.$watch 值包含在 promise $q.when(value) 中
【发布时间】: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


【解决方案1】:

不可能,最好的选择是在$scope中做$watch q是存储你的服务的价值

【讨论】:

    猜你喜欢
    • 2016-01-29
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    相关资源
    最近更新 更多