javascript
  • web-services
  • angular
  • q
  • 2017-06-05 4 views -4 likes 
    -4

    Ich möchte den Namen ändern und "exito" (Erfolg in Spanisch) anstelle von .then() und "error" anstelle von catch() schreiben.Kann ich die Methoden "then" und "catch" umbenennen, wenn ich ein Versprechen einreiche?

    Hier ist mein Code.

    Wie kann ich damit umgehen?

    var url = 'http://devmsadasds'; var objekt = null;

      var dataServicio = new dataService(url, object, $scope, $routeParams, $controller, $timeout, $http, $q); 
           dataServicio.ajaxPeticion(url, object, $scope, $routeParams, $controller, $timeout, $http, $q) 
           .then(function(response){ 
            $scope.datosVista = response; 
           }) 
           .catch(function(err){ 
            alert(err); 
           }); 
    
          } 
    
    
          function dataService(url, object, $scope, $routeParams, $controller, $timeout, $http, $q) { 
           return { 
             ajaxPeticion : ajaxPeticion 
            } 
    
           function ajaxPeticion(url, object, $scope, $routeParams, $controller, $timeout, $http, $q) { 
            if(object === null || object === undefined) { 
             var metodo = 'GET'; 
           } 
           else { 
             var metodo = 'POST'; 
           } 
    
            var deferred = $q.defer(); 
            var promise = deferred.promise; 
    
            $http({ 
              method: metodo, 
              url: url, 
              data: object, 
              headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
            }) 
            .then(function(response) { 
             if(response.data.jsonMC.resultado === false || response.status != 200 || response.data.jsonMC.respuesta === null) { 
              deferred.reject(response.data.jsonMC.error); 
             } 
             else { 
              deferred.resolve(response.data.jsonMC.respuesta); 
             } 
            }, function errorCallback(response) { 
             deferred.rejected(response.data.jsonMC.error); 
            }); 
    
            return promise; 
           } 
    
          } 
    

    Antwort

    0

    Sie könnten, aber um ehrlich zu sein, kann ich nicht wirklich das Dienstprogramm sehen. Sie werden einen Weg schaffen, auf dem sich alle Entwickler (oder Sie) an eine Methode gewöhnen werden, die eigentlich nicht existiert, Ihr Code wird niemals von Außenstehenden verstanden werden, die nichts von dieser "Konvention" wissen. Im selben Moment wird jede Bibliothek, die "normale Versprechungen" verwendet, die then und nicht Ihre Methode verwenden.

    By the way, sollte dies einfach tun, was Sie für eine einfache JavaScript möchten, können Sie das gleiche für AngularJS mit dem $q Dienst tun:

    Promise.prototype.exito = Promise.prototype.then; 
    

    Promise.prototype.exito = Promise.prototype.then; 
     
    new Promise((resolve, reject) => { 
     
        setTimeout(function() {console.log('finished'); resolve('resolved');}, 2500); 
     
    }).exito(function(data){ console.log(data); });

    wieder. Ich empfehle Ihnen dringend, dies nicht zu tun.

    +0

    Ja, ich weiß es. Aber mein Chef will alles auf Spanisch. Es ist schrecklich. Trotzdem danke. –

    +1

    Sie sollten ihn wirklich wissen lassen, dass dies Teil einer in die Sprache integrierten Standardschnittstelle ist. Das wäre so, als würde man versuchen, das Wort 'if' in' si' zu ändern. – sbking

    +0

    @FacundoZambuto versuchen, ihm zu erklären, dass das nicht absolut Sinn macht. Was als nächstes? Übersetzen aller JavaScript/AngularJS/jQlite-Methoden? Wenn er das nicht verstehen kann, ist das Beste, was Sie tun können, anstatt alle Methoden zu maskieren, einen neuen Job zu finden. – quirimmo

    0

    Es ist eine schlechte Methode, Methoden mit anderen Namen zu maskieren. Wenn Sie noch darüber nachdenken, beachten Sie bitte, dass "Fehler" auch eine Bedeutung in Englisch hat, und es kann zu Verwirrung führen.

    Verwandte Themen