我在Javascript中使用Angular连接到服务器,我想做的是制作可重复使用的代码。
如果必须从服务器I获取数据的每个服务必须知道状态响应,如果是200,我必须知道成功是1还是0。 所以......这是我今天的代码(使用承诺):
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”var特别适用于此服务,对于另一项服务,我必须使用其他变量,等等......
所以...有一种方法可以重新分离这两部分代码,这样我就可以重用并且不必复制和粘贴大部分代码了吗?
谢谢!
答案 0 :(得分:0)
请创建一个拦截器,以便在每次回复状态时进行检查
http://thecodebarbarian.com/2015/01/24/angularjs-interceptors