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 });