Je travaille sur une application Spotify. Je peux me connecter et obtenir mon jeton. Mon problème est que je ne peux pas accéder à une variable en dehors de la méthode. Dans ce cas, "getCurrentUser"
Ceci est ma méthode:
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)
})
}
};
Comme vous pouvez le voir, j'ai consigné le nom console.log et j'ai la bonne valeur dans la console. Mais ne fonctionne que si j'appelle la fonction getUser()
. Je reçois undefined
même avec un retour de la variable de noms.
J'ai besoin de $scope
cette variable.
getUser()
ne renvoie rien. Vous devez renvoyer la promesse à partir de Spotify.getCurrentUser()
, puis lorsque vous renvoyez names
dans que il est renvoyé par la fonction externe.
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;
})
}
}
Les réponses ci-dessus expliquaient pourquoi vous obteniez undefined
lorsque vous appelez getUser()
, mais si vous souhaitez utiliser le résultat final, vous souhaitez également modifier la façon dont vous utilisez la valeur que vous obtenez de getUser - elle renvoie un objet de promesse, et non le résultat final. êtes après, donc votre code veut appeler la méthode then
de la promesse lorsque la promesse est résolue:
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
});
Si vous l'utilisez comme ça, vous pouvez utiliser le wait call
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;
});
}
}
const names = await getUser();