嘿,我試圖建立一些默認的驗證$ http承諾。我這樣做的原因是因爲我有多個請求返回相同的結果。所以這將是合乎邏輯的,從減少代碼的要求單獨處理程序複製
比方說,我有這樣的要求:
getMoreUsers: function(searchid, apiroute, limit) {
console.log(apiroute);
return $http({
method: 'get',
url: WeAlertApiUrl + apiroute,
params: {
'searchid' : searchid,
'start' : limit }
}).then(function(data) {
if(data.data.isValid === true) {
return processUsers(data.data.users);
}else {
$cordovaToast.showShortTop(data.data.message).then(function(success) {
}, function (error) {alert(data.data.message);});
}
}, function(error) {
$cordovaToast.showShortTop("something went wrong..").then(function(success) {
}, function (error) {alert("Something went wrong..");});
});
},
,是不是一致的唯一事情是data.data.users
那麼理想我喜歡構建這樣的事情:
getMoreUsers: function(searchid, apiroute, limit) {
console.log(apiroute);
return $http({
method: 'get',
url: WeAlertApiUrl + apiroute,
params: {
'searchid' : searchid,
'start' : limit }
}).then(
return handleResult(processUsers(data.data.users))
});
},
這是可以實現的嗎?以及如何訪問$ http的承諾並將其發送到服務
感謝@Bergi我能解決它! 的getmoreusers服務現在看起來像
getMoreUsers: function(searchid, apiroute, limit) {
console.log(apiroute);
return $http({
method: 'get',
url: WeAlertApiUrl + apiroute,
params: {
'searchid' : searchid,
'start' : limit }
}).then(function(res){return successHandler(res, 'users');}, errorHandler);
},
,併成功和錯誤處理程序被裹得像個:
.factory('successHandler', function($cordovaToast, processAlerts, processUsers, processBerichten, processReacties, processUserAlerts) {
return function(data, type) {
if(data.data.isValid === true){
switch(type){
case 'users':
return processUsers(data.data[type]);
case 'alerts':
return processAlerts(data.data[type]);
case 'berichten':
return processBerichten(data.data[type]);
case 'reacties':
return processReacties(data.data[type]);
case 'useralerts':
return processUserAlerts(data.data[type]);
}
}else {
$cordovaToast.showShortTop(data.data.message).then(function(success) {
}, function (error) {alert(data.data.message);});
}
};
}).factory('errorHandler', function($cordovaToast) {
return function(error) {
$cordovaToast.showShortTop("Er ging iets mis... bent u verbonden met het internet?").then(function(success) {
}, function (error) {
alert("Er ging iets mis... bent u verbonden met het internet?");
});
};
})
這就是所謂的transformResponse ? – 2015-03-19 11:31:15