0

Tengo en mi controlador:

$scope.test= function () {      
    var var1 = 0;
    var var2 = 0;

    var1 = TestService.loadVariable("1")
    var2 = TestService.loadVariable("2")

    $scope.result = var1 + var2;
}

y mi servicio es :

    loadVariable : function(name) {
        return $http({
             method: 'GET',
             url: "/test/sheet/loadVariable/",
             params: {name: name},
            }).then(function success(response) {
                return response.data;
            }, function error(response) {

            });
    },

el problema es que siempre me sale 0 el result y creo q es porque no le da tiempo a ejecutarse los metodos de loadvariables, alguna sugerencia?

sirdaiz
  • 1,253
  • 5
  • 31
  • 49

1 Answers1

1

El problema que tienes es que como estas retornando una una promesa, la misma se invocará en un futuro, por eso cuando haces la suma te da "cero" porque las promesas no han sido resueltas.

Para que te funcione, debes meter todo dentro del .then() y adicionalmente anindar la segunda llamada a tu servicio, para obtener el segundo valor, y posteriormente hacer la suma y refrescar el scope.

    $scope.test= function () {      
        var var1 = 0;
        var var2 = 0;

        TestService.loadVariable("1").then(function(response){
          var1 = resonse;
          TestService.loadVariable("2").then(function(response2){
             var2=resposne2
             $scope.result = var1 + var2;
           })
        })
}

Te invito a que veas esta respuesta que dí hace algún tiempo hablando de este tipo de problemas

Wilfredo
  • 2,455
  • 3
  • 20
  • 35
  • el problema es que no tengo 2 variables sino N, como lo haria? – sirdaiz Oct 18 '17 at 16:17
  • Considero que para eso debes hacer otra pregunta, ya que, mi respuesta por ahora solventa el problema que planteaste en la pregunta, además sobre cargar las preguntas no correcto. Y lo que planteas de hacerlo N veces, no lo considero como optimo, si das mas detalles seguro se te da una mejor solución. – Wilfredo Oct 18 '17 at 16:19
  • puedo modificar mi pregunta para no crear otra o me recomiendas que habra otra? – sirdaiz Oct 18 '17 at 16:21
  • @Wilfredo tiene razón, debes crear otra, recuerda es un solo tema por pregunta. – Bender Paisa Oct 18 '17 at 16:33
  • @sirdaiz Mejor crea una nueva. y Coloca que es lo que estás buscando con esas llamadas aninadas, porque se puede optimizar. – Wilfredo Oct 18 '17 at 16:39