AngularJS文档对$http success和error方法都有弃用声明。从库中删除此抽象是否有特定原因?
$http
success
error
问题在于,.success和.error方法 不可链接, 因为它们 忽略返回值 。这给熟悉 链的 人带来了问题,并鼓励了不熟悉 链的人编写不好的代码。
.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参考- 弃用通知
IMO .success和.errorAPI最初是API设计的劣势。此问题突出表明,在许多情况下,开发人员会感到困惑,因为他们期望.success并.error以相同的方式工作,.then反之亦然。在一个理想的世界中,我宁愿放弃这些$http具体的“承诺”。相反,我们可以鼓励开发人员使用标准的$qPromise API .then和.catch。与使用响应对象相比,与显式参数相比,IMO带来的好处很小。
.then
$q
.catch
— AngularJS第10508期$http .success/.error与.then工作方式 不同。
.success/.error
在$http传统方法的承诺success,并error已被弃用。请改用标准then方法。如果$httpProvider.useLegacyPromiseExtensions设置为,false则这些方法将引发$http/legacy错误。
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
由于b54a39,$http不推荐使用的自定义回调方法- .success()和.error()-已被删除。您可以改用标准.then()/ .catch()诺言方法,但是请注意,方法签名和返回值是不同的。
.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