[英]Reusable code at checking status respose with Javascript
我正在Javascript中使用Angular連接到服務器,我要做的是制作可重用的代碼。
問題是,對於必須從服務器獲取數據的每個服務,我必須知道狀態響應,如果是200,則必須知道成功是1還是0。所以...這是我今天的代碼(使用promise) :
function obtenerUltimasOperacionesComplejo() {
return $http
.get(ultimasOperacionesUrl,
{params: {idComplejo: 11}})
.then(obtenerDatosUltimasOperaciones)
.catch(generarError);
}
function obtenerDatosUltimasOperaciones(data) {
var mensaje = '';
var status = data.status;
if(status == 401){
mensaje = 'Acceso no autorizado.';
return $q.reject(mensaje);
}
else if (status <> 200){
mensaje = 'Ups! Hubo un problema al conectarse al servidor. Intente nuevamente.';
return $q.reject(mensaje);
}
else if(status == 200){
var exito = data.data.success;
if(exito == 0){
mensaje = data.data.mensaje;
return $q.reject(mensaje);
}
else if(exito == 1){
ultimasOperaciones = data.data.ultimasOperaciones;
return ultimasOperaciones;
}
}
}
function generarError(e){
var newMessage = 'XHR error! :';
if (e.data && e.data.description) {
newMessage = newMessage + '\n' + e.data.description;
}
e.data.description = newMessage;
logger.error(newMessage);
return $q.reject('Ups! Hubo un problema al conectarse al servidor. Intente nuevamente');
}
這部分代碼:
if(status == 401){
mensaje = 'Acceso no autorizado.';
return $q.reject(mensaje);
}
else if (status <> 200){
mensaje = 'Ups! Hubo un problema al conectarse al servidor. Intente nuevamente.';
return $q.reject(mensaje);
}
else if(status == 200){
var exito = data.data.success;
if(exito == 0){
mensaje = data.data.mensaje;
return $q.reject(mensaje);
}
...
我必須將其用於我擁有的每個服務...我的問題是我無法在上面的代碼中放入函數,因為我不知道如何通過相應的服務來設置變量,意思:
else if(exito == 1){
ultimasOperaciones = data.data.ultimasOperaciones;
return ultimasOperaciones;
}
這部分代碼針對每個服務而更改,因為“ ultimasOperaciones”變量特別適用於該服務,對於另一個服務,我必須使用另一個變量,依此類推...
所以...有一種方法可以使代碼的這兩部分脫節,以便我可以重用,而不必復制和粘貼大部分代碼?
謝謝!
請創建一個攔截器,以便每次檢查響應狀態時
http://thecodebarbarian.com/2015/01/24/angularjs-interceptors
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.