我有一個AngularJS應用程序,我有service
s調用$http
資源並返回我在控制器中解決promise
。下面是我在做什麼的樣本:AngularJS服務和承諾最佳實踐
app.service('Blog', function($http, $q) {
var deferred = $q.defer();
$http.get('http://blog.com/sampleblog')
.then(function(res) {
// data massaging stuffs
return deferred.resolve(res.data);
}, function(err) {
// may be some error message checking and beautifying error message
return deferred.reject(err);
});
// chain if further more HTTP calls
return deferred.promise;
});
但我根本就以下還有:
app.service('Blog', function($http) {
return $http.get('http://blog.com/sampleblog');
});
然後做驗證,錯誤美化,鏈接承諾等在controller
級別。
我的問題是:在代碼彈性和靈活性方面哪些被認爲是「最佳實踐」?或者是否有更好的方法來完成與此完全不同的方式?
IMO最好是離開驗證,錯誤美化,鏈接承諾等的服務,因爲你可以使用來自不同控制器的服務,這樣你不重複的代碼 – rpadovani
[。然後] (https://docs.angularjs.org/api/ng/service/$q#the-promise-api)會返回一個新的承諾,因此您不必顯式使用'$ q'服務,因爲它基本上正在執行一樣。 –
@ProfessorAllman如果我有一些數據按摩邏輯呢?像這樣做'$ scope.post = someMethod(res.data [0]);'或'$ scope.error = if(res.err.details.code === 400)doThis(); else doThat();' –