簡體   English   中英

檢查狀態時可重用的代碼以Javascript重新放置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM