$http
,success
和error
方法的弃用声明。从库中删除此抽象是否有特定原因?#1 楼
问题在于.success
和.error
方法不可链接,因为它们忽略了返回值。这给熟悉链接的人带来了问题,并鼓励不熟悉链接的人提供不良代码。见证所有使用延迟反模式的StackOverflow示例。引用AngularJS团队之一:
IMO
.success
和.error
有点不好首先是API设计。此问题突出表明,在许多情况下,开发人员会感到困惑,因为他们期望.success
和.error
的工作方式与.then
相同,反之亦然。相反,我们可以鼓励开发人员使用标准的$http
promise API $q
和.then
。与使用响应对象相比,与使用响应对象相比,IMO在使用显式参数方面几乎没有任何好处。— AngularJS问题#10508
.catch
$http
与.success/.error
的工作方式不同。弃用通知(v1.5)
.then
传统承诺方法$http
和success
已弃用。请改用标准的error
方法。如果将then
设置为$httpProvider.useLegacyPromiseExtensions
,则这些方法将引发false
错误。— AngularJS $ http服务API参考-弃用声明
UPDATE
不推荐使用的
$http/legacy
和.success
方法已从AngularJS 1.6中删除。由于b54a39,
.error
的不推荐使用的自定义回调方法-$http
和.success()
-已被删除。您可以改用标准的.error()
/ .then()
promise方法,但是请注意,方法签名和返回值是不同的。$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
#2 楼
javascript使用的与Promise相关的模式仅与.then(successCallback, errorCallback)
一起使用,因此他们可能旨在使用js模式。