检查状态的可重用代码使用Javascript进行处理

时间:2016-10-13 23:18:46

标签: javascript angularjs

我在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特别适用于此服务,对于另一项服务,我必须使用其他变量,等等......

所以...有一种方法可以重新分离这两部分代码,这样我就可以重用并且不必复制和粘贴大部分代码了吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

请创建一个拦截器,以便在每次回复状态时进行检查

http://thecodebarbarian.com/2015/01/24/angularjs-interceptors