【问题标题】:Angular Controllers and Services - Success and Error callbacksAngular 控制器和服务 - 成功和错误回调
【发布时间】:2013-07-01 11:58:04
【问题描述】:

我正在 Angular 中为现有的 Web 应用程序构建一个服务层。将 $http 请求和数据按摩转移到 Angular 自定义服务中。我了解服务的依赖注入部分,但我正在努力解决成功/错误并将其传递回控制器。

我看到有些人在 $q 中使用 Promise。如果您对每个服务调用进行单个 REST API 调用,是否有更简单的“then()”语法?注意:后端是非标准的 REST,所以 $resource 策略对我不起作用。我无法说出处理来自服务的承诺/回调的最新推荐方式。如果您只关心成功条件,那么回调似乎很简单。最近有没有一个很好的示例应用程序可以很好地展示服务的这一方面?还是文章?

【问题讨论】:

  • success() 和 error() 不返回承诺,只有 then() 会。这是两个服务的示例,一个使用success(),另一个使用then():stackoverflow.com/questions/17416599/… 对这个问题的共识是:使用then()。

标签: javascript angularjs callback promise angular-services


【解决方案1】:

我最近编写了一些缓存服务,但我无法决定是使用延迟还是回调。我最终使用了延迟路线,我喜欢它。同样的东西写了两次,我可以肯定地说,对于使用你服务的人来说,变化只是很小的。

在回调中,它们传递一个回调以进行延续。

在 deferred 中,它们以菊花链形式连接一个 .then 并将其传递给一个匿名函数以进行延续。非常相似。

由于 Angular 有能力特别考虑延迟,我建议使用延迟。

如果您将作用域变量设置为 deferred,Angular 就足够聪明,可以等到 deferred.promise 解决。一旦它被解决,Angular 就会绑定到该变量。这真是太棒了。我建议接受这一点。

【讨论】:

    【解决方案2】:

    我做了一个实现服务的简单 plunk。 getData() 这里返回一个promise,它的 .then() 有成功和错误处理程序。希望对你有帮助:http://plnkr.co/edit/xu9HXK4mRqwaZcz9bXZd?p=preview

    【讨论】:

      猜你喜欢
      • 2015-09-07
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多