AngularJS文档有关于$http success和error方法的弃用通知.这个抽象是从库中删除的具体原因吗?
我发现很难理解"延迟反模式".我认为我原则上理解它,但我没有看到一个超级简单的例子,一个服务,一个不同的承诺和一个反模式,所以我想我会尝试自己做但看到我不是超级了解它我先得到一些澄清.
我在工厂(SomeFactory)中有以下内容:
//url = 'data.json';
return {
getData: function(){
var deferred = $q.defer();
$http.get(destinationFactory.url)
.then(function (response) {
if (typeof response.data === 'object') {
deferred.resolve(response.data);
} else {
return deferred.reject(response.data);
}
})
.catch(function (error) {
deferred.reject(error);
});
return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)
我检查它的对象的原因只是在上面添加一个简单的验证层 $http.get()
以下,在我的指令中:
this.var = SomeFactory.getData()
.then(function(response) {
//some variable = response;
})
.catch(function(response) {
//Do error handling here
});
Run Code Online (Sandbox Code Playgroud)
现在我的理解是,这是一个反模式.因为原始的延期承诺会捕获错误并简单地吞下它.它不会返回错误,因此当调用此"getData"方法时,我已经执行了另一个捕获错误的捕获.
如果这不是反模式,那么有人可以解释为什么两者都要求各种"回调"吗?当我第一次开始写这个工厂/指令时,我预计不得不在某个地方做一个默认的承诺,但我没有预料到必须.catch()在两边(也就是我有点想我可以让工厂返回响应或错误,如果我做了一个SomeFactory.getData()
angularjs angularjs-directive angularjs-service angular-promise
angularjs ×2