javascript - withcredentials - responseerror angularjs




promise `.then`メソッドの外部の変数にアクセスするにはどうすればよいですか? (2)

そのように使用する場合は、 await 呼び出しを使用できます

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

私はSpotifyアプリに取り組んでいます。 ログインしてトークンを取得できます。 私の問題は、メソッドの外部の変数にアクセスできないことです。 この場合、 "getCurrentUser"

これは私の方法です:

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

ご覧のとおり、私は名前をconsole.loggedにしましたが、コンソールで正しい値を取得しています。 ただし、関数 getUser() を呼び出した場合にのみ機能します。名前変数が返されても undefined になります。

その変数を $scope する必要があります。


getUser() は何も返しません。 Spotify.getCurrentUser() からプロミスを返す必要があり、 その中 names を返すと、外部関数によって返されます。

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

上記は、 getUser() 呼び出すときに undefined になった理由を答えましたが、最終結果で作業したい場合は、getUserから取得した値の使用方法も変更する必要があります-endではなくpromiseオブジェクトを返します結果はあなたが望んでいるので、あなたのコードはプロミスが解決されたときにプロミスの then メソッドを呼び出したい:

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






angular-promise