Como posso acessar uma variável fora do método `.then` da promise?

Eu estou trabalhando em um aplicativo Spotify. Consigo fazer login e obter meu token. Meu problema é que não consigo acessar uma variável fora do método. Neste caso, "getCurrentUser"

Este é o meu método:

 function getUser() { if ($localStorage.token == undefined) { throw alert("Not logged in"); } else { Spotify.getCurrentUser().then(function(data) { var names = JSON.stringify(data.data.display_name); console.log(names) }) } }; 

Como você pode ver eu console.logged o nome e recebo o valor correto no console. Mas só funciona lá se eu chamar a function getUser() eu fico undefined mesmo com um retorno da variável names.

Eu preciso $scope dessa variável.

getUser() não está retornando nada. Você precisa retornar a promise do Spotify.getCurrentUser() e, quando retornar names dentro dela, ela é retornada pela function externa.

 function getUser() { if ( $localStorage.token == undefined) { throw alert("Not logged in"); } else { return Spotify.getCurrentUser().then(function(data) { var names = JSON.stringify(data.data.display_name); console.log(names) return names; }) } } 

O acima respondeu porque você estava ficando undefined ao chamar getUser() , mas se você quer trabalhar com o resultado final, você também quer mudar como você está usando o valor que você obtém de getUser – ele retorna um object de promise, não o fim O resultado é que você quer, então seu código quer chamar o método da promise quando a promise for resolvida:

 getUser() // this returns a promise... .then(function(names) { // `names` is the value resolved by the promise... $scope.names = names; // and you can now add it to your $scope }); 
Intereting Posts