Глобальные переменные не меняются, как ожидается от методов - PullRequest
0 голосов
/ 21 сентября 2018

Я использую этот модуль в программе реагирования, когда компонент импортирует этот модуль.Мне нужен токен доступа после получения для сохранения в глобальной переменной, но по какой-то причине я не могу понять, что глобальные переменные меняются не так, как хотелось бы

let usersAccessToken = '';
const clientId = 'ca47d370807d46718c513653fb3d2e';
const UriRedirect = 'http://localhost:3000/';
let flag = false;
console.log(flag);
console.log(usersAccessToken);



const Spotify = {



    getAccessToken: function () {
        //
        if (usersAccessToken.length>0) {
            console.log('step 1');
            flag = true;

            return usersAccessToken;


        } else if (window.location.href.match(/access_token=([^&]*)/) !== null && window.location.href.match(/expires_in=([^&]*)/) !== null) {

** При этомточка в коде Мне интересно, почему userAccessToken не хранится в глобальной переменной над модулем?Я знаю, что значение хранится локально, но мне нужно, чтобы это значение было изменено глобально.когда я console.log это всегда остается пустой строкой и мои логические флаги не меняются?

console.log('step 2');
            usersAccessToken = window.location.href.match(/access_token=([^&]*)/)[1];

            let expirationTime = window.location.href.match(/expires_in=([^&]*)/)[1];

            window.setTimeout(() => usersAccessToken = '', expirationTime );
            window.history.pushState('Access Token', null, '/');
            flag = true;

            return usersAccessToken;

        } else {
            console.log('step 3');
            flag = true;

            window.location = `https://accounts.spotify.com/authorize?client_id=${clientId}&response_type=token&scope=playlist-modify-public&redirect_uri=${UriRedirect}`;

        }
    },

1 Ответ

0 голосов
/ 21 сентября 2018

Этот код ниже работает нормально, Вы можете посмотреть на код ниже, это хорошо работает для меня.

Проверено на ... https://repl.it/repls/PitifulEarlyMapping

let usersAccessToken = '';
let flag = false;
console.log(flag);
console.log('token',usersAccessToken);
getAccessToken();

function getAccessToken() {
    if (usersAccessToken.length>0) {
        console.log('step 1');
        flag = true;
        return usersAccessToken;
    } else if (flag== false) {
      console.log('step 2');
        usersAccessToken = 'tokebjzgdhjasgfj';
        return usersAccessToken;
    } else {
        console.log('step 3');
        flag = true;
        return usersAccessToken;
    }
}
...