当前位置: 首页 > 面试题库 >

为什么不推荐使用AngularJS $ http成功/错误方法?从v1.6中删除了吗?

房学
2023-03-14
问题内容

AngularJS文档对$http successerror方法都有弃用声明。从库中删除此抽象是否有特定原因?


问题答案:

问题在于,.success.error方法 不可链接, 因为它们 忽略返回值 。这给熟悉 链的
人带来了问题,并鼓励了不熟悉 链的人编写不好的代码。

引用AngularJS团队之一:

IMO
.success.errorAPI最初是API设计的劣势。此问题突出表明,在许多情况下,开发人员会感到困惑,因为他们期望.success.error以相同的方式工作,.then反之亦然。在一个理想的世界中,我宁愿放弃这些$http具体的“承诺”。相反,我们可以鼓励开发人员使用标准的$qPromise
API .then.catch。与使用响应对象相比,与显式参数相比,IMO带来的好处很小。

— AngularJS第10508期$http .success/.error.then工作方式
不同。

弃用通知(v1.5)

$http传统方法的承诺success,并error已被弃用。请改用标准then方法。如果$httpProvider.useLegacyPromiseExtensions设置为,false则这些方法将引发$http/legacy错误。

— AngularJS $ http服务API参考-
弃用通知

更新

不推荐使用的.success.error方法已从AngularJS 1.6中删除。

由于b54a39,$http不推荐使用的自定义回调方法-
.success().error()-已被删除。您可以改用标准.then()/
.catch()诺言方法,但是请注意,方法签名和返回值是不同的。

$http(...)
  .then(function onSuccess(response) {
    // Handle success
    var data = response.data;
    var status = response.status;
    var statusText = response.statusText;
    var headers = response.headers;
    var config = response.config;
    ...
  }).catch(function onError(response) {
    // Handle error
    var data = response.data;
    var status = response.status;
    var statusText = response.statusText;
    var headers = response.headers;
    var config = response.config;
    ...
  });

— AngularJS开发人员指南-迁移至v1.6-http



 类似资料:
  • AngularJS文档中有一个关于和方法的弃用通知。是否有从库中删除此抽象的特定原因?

  • 问题内容: (此问题不同于您为什么要实现finalize()?此问题与从Java平台弃用有关,另一个问题与在应用程序中是否应使用此机制有关。) 为什么在Java 9中不推荐使用该方法? 是的,它可能以错误的方式使用(例如,从垃圾收集中保存对象(虽然仅一次)或尝试关闭其中的某些本机资源(总比不完全关闭要好))以及许多其他方法可能会被错误地使用。 那么,是真的如此危险或绝对没有用,有必要将其逐出Jav

  • 问题内容: 根据API文档,伪指令的属性已弃用,因此将来,所有伪指令的行为都将使用当前默认值。 这消除了开发人员替换element指令的element的能力,而没有明显替代此功能的能力。 有关如何使用元素指令和不使用元素指令的示例,请参见此示例。 为什么不推荐使用此有用的属性而不进行替换? 问题答案: 在下一个主要的Angular版本中,将删除用于定义替换其所在元素的指令的标志。此功能具有难以理解

  • 问题内容: 众所周知,Java 中的接口已损坏。造成这种情况的原因很多,我将不再赘述。其他人已经做到了。这也是Java架构师本身的立场。 因此,我的问题是:为什么还不被弃用?如果核心Java团队已确定它已损坏,那么他们还必须考虑过时。他们反对这样做的原因是什么(在Java 8中仍不建议弃用)? 问题答案: 有一个错误在1997年提交给Java的错误数据库有关添加方法,所以将不再是无用的。它以“无法

  • 问题内容: 我曾经在hibernate 3中使用getHibernateTemplate(),现在我转向了Hibernate 4,在这里我找不到以下类: 在这里我已经阅读过有关它的更多信息,不建议使用 http://forum.springsource.org/showthread.php?117227-Missing-Hibernate- Classes-Interfaces-in-spring

  • 问题内容: 我正在将hibernate项目配置为使用第二级缓存提供程序,以便可以利用查询缓存。 我向ehcache添加了一个依赖项: 我认为我要使用的提供程序类是: 在eclipse中查看引用的库时,我在和上都看到了注释。是什么赋予了?我可以使用最新的替代供应商吗? 我正在使用hibernate版本3.4.0.GA,以防万一。 问题答案: 是什么赋予了?我可以使用最新的替代供应商吗? 不推荐使用它