问题在于,.success
和.error
方法 因为它们 。这给熟悉 人带来了问题,并鼓励了不熟悉 人编写不好的代码。
引用AngularJS团队之一:
IMO.success
和.error
API最初是API设计的劣势。此问题突出表明,在许多情况下,开发人员会感到困惑,因为他们期望.success
并.error
以相同的方式工作,.then
反之亦然。在一个理想的世界中,我宁愿放弃这些$http
具体的“承诺”。相反,我们可以鼓励开发人员使用标准的$q
Promise API .then
和.catch
。与使用响应对象相比,与显式参数相比,IMO带来的好处很小。
— AngularJS第10508期$http
.success/.error
与.then
工作方式 不同。
在$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;
...
});