Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Receber Valor do THEN

Quero receber o resultado de uma then em uma variável e utiliza-la fora da função , porém quando eu faço isso a variável vem vazia. // boletos que recebe o then e quero usar lá fora

var boletos ={}; consultar();

function consultar() { BoletoService.getFeriados().then(OK); function OK(response) { boletos = response.data;

}

}

4 respostas

Oi Arthur, o problema é que as chamadas da promise são assíncronas. Então ele até altera o valor da variável mas vc precisa esperar a promise resolver para usá-la.

Se você tentar usar a variável logo abaixo do código da promise por exemplo, ela não vai estar populada ainda.

O mais comum ao usar promises é encadear os then 4 usar as variáveis dentro deles apenas, evitar mexer no estado global (a não ser que sejam dados pro scope do angular)

É uma operação assíncrona, se ela demorar 2 segundos etc... quem for utilizar a propriedade não terá o valor se esse acesso for em menos de 2 segundos.

Em teoria você fez certo, mas você teria guardar o resultado na propriedade do seu controller. No curso de Angular eu faço isso quando busco as fotos do servidor e guardo-as na propriedade do controller.

Angular é um framework que só ajuda na organização do código, todo código assíncrono, modelo de callbacks e essas coisas mais iniciais do JavaScript são incorporadas nele também.

Vi no seu perfil que não concluiu os cursos de JavaScript da carreira. Talvez seja legal passar por eles para consolidar ainda mais seu conhecimento. Inclusive no curso de JavaScript é ensinado XMLHttpquest e como lidar com código assíncrono.

solução!

Veja um exemplo extraído do curso:

angular.module('alurapic').controller('FotosController', function($scope, $http) {

    $scope.fotos = [];

    $http.get('/v1/fotos')
    .then(function(retorno) {
        $scope.fotos = retorno.data;
    })
    .catch(function(erro) {
        console.log(erro);
    }); 
});

Eu guardo a fotos para poder ser acessada pela view.

Obrigado professor..