我的角应用程序中有一个简单的userAPI服务:
app.service('userAPI', function ($http) {
this.create = function (user) {
return $http
.post("/api/user", { data: user })
.then(function (promise) { return promise.data })
.catch(function (error) { return error.data })
}
this.read = function (user) {
return $http
.get("/api/user/" + user.id)
.then(function (promise) { return promise.data })
.catch(function (error) { return error.data })
}
this.update = function (user) {
return $http
.patch("/api/user/" + user.id, { data: user })
.then(function (promise) { return promise.data })
.catch(function (error) { return error.data })
}
this.delete = function (user) {
return $http
.delete("/api/user/" + user.id)
.then(function (promise) { return promise.data })
.catch(function (error) { return error.data })
}
})
正如您所看到的,我在每个$ http请求之后重复相同的.then()和.catch()函数。我可以根据DRY原则避免这种重复吗?
答案 0 :(得分:1)
为什么不只编写一次函数并将它们应用于服务中的每个回调?
类似的东西:
app.service('userAPI', function ($http) {
var success = function (response) { return response.data; },
error = function (error) { return error.data; };
this.create = function (user) {
return $http
.post("/api/user", { data: user })
.then(success, error);
}
this.read = function (user) {
return $http
.get("/api/user/" + user.id)
.then(success, error);
};
this.update = function (user) {
return $http
.patch("/api/user/" + user.id, { data: user })
.then(success, error);
};
this.delete = function (user) {
return $http
.delete("/api/user/" + user.id)
.then(success, error);
};
});
另请注意,除了使用then / catch之外,您还可以使用then(successcallback, errorcallback, notifycallback)
来缩短代码。