Моя функция не вызывается в javascript / vue - PullRequest
0 голосов
/ 10 января 2019

В настоящее время у меня проблемы с моим кодом, не вызывающим функцию в JavaScript. Я пытаюсь вызвать функцию для обновления моего токена JWT, но по какой-то причине он ее вообще не вызывает.

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

Это функция, которая не вызывается. Консоль никогда не напечатает «Тест 2 пройден»

function refreshToken(store) {
    console.log('Test 2 passed'); //This doesnt get displayed in the console
    if(store.state.auth.isRefreshing) {
        return store.state.auth.refreshingCall;
    }

    console.log('Test 3 passed');
    store.commit('setIsRefreshing', true);
    const refreshingCall = window.axios.get('/api/user/refresh-token').then(token => {
        console.log('Test 4 passed');
        originalRequest['Authorization'] = 'Bearer ' + token;
        store.commit('setIsRefreshing', false);
        store.commit('setRefreshingCall', undefined);
        console.log('Token has been updated to: '+ JSON.stringify(token));
        localStorage.setItem('token', token);
        window.axios.defaults.headers.common['Authorization'] = 'Bearer '+ token;
        store.commit('setToken', token);
        console.log('Test 5 passed');

        return Promise.resolve(originalRequest);
    });

    store.commit('setRefreshingCall', refreshingCall);
    return refreshingCall;
}

Это перехватчик axios, который обнаружит, что страница возвращает 401, поэтому он может вызвать функцию обновления токена

window.axios.interceptors.response.use(function (response) {
    // Do something with response data
    return response;
}, function (error) {
    let res = error.response;
    if (res.status === 401 && res.config && !res.config.__isRetryRequest) {
    // Do something with response error
        alert("You're login session expired. Please log in again.")
        console.log('Test 1 passed'); //This gets displayed in the console
        var ret = refreshToken(this.store).then(__ => {
            error.config.headers['Authorization'] = 'Bearer ' + store.state.token;
            error.config.baseURL = undefined;
            console.log('I have ran the last part: '+ store.state.token);
            console.log('Test 6 passed');
            return window.axios.request(error.config);
        });

        return ret;
    }


    return Promise.reject(error);
});

Кажется, я не могу понять, почему функция не вызывается, есть идеи?

(изображение консоли)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...