函数返回未定义状态

时间:2018-09-25 17:25:01

标签: javascript ecmascript-6

我具有以下功能,可以在其中将jwt张贴到服务器上以验证它是有效的jwt,并且它尚未过期,或者如果我的应用程序没有jwt,则得到一个新的jwt。然后尝试返回该值,然后打电话给我

所以这是我的初始javascript拨打电话

       import { checkJwtExp } from '../../APIChecks.js';

            debugger;
            const token = checkJwtExp();
            console.log(token);

这是我的APICheck.js

export const getJwtToken = function() {
    const user = "UserName";
    let token = "";
    const pass = "Pass";
    const xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            token = this.responseText;
            sessionStorage.setItem("token", token);
            return token;
        }
    }
    xhttp.open("POST", "https://localhost:44377/api/auth/token", true);
    xhttp.setRequestHeader('Authorization', 'Basic ' + window.btoa(user + ':' + pass));
    xhttp.send();
};

export const checkJwtExp = function() {
    const token = sessionStorage.getItem('token');
    const xhttp = new XMLHttpRequest();
    const url = 'https://localhost:44377/api/auth/validateToken';


    if (token === '' || token === undefined || token === null) {
        getJwtToken();
    }
    else {
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                if (this.responseText !== "valid") {
                    getJwtToken();
                }
                else {
                    return token
                }
            }
        }
        xhttp.open("POST", url, true);
        xhttp.setRequestHeader("Content-Type", "application/json");
        xhttp.send(JSON.stringify(token));
    }

};

我已经分别测试了所有这些调用,并且它们起作用了,但我的问题出在我的初始调用上,当我对需要授权的其他端点进行其他调用时,我想以这种方式返回令牌字符串,我只能使用该令牌变量。

0 个答案:

没有答案