Estoy tratando de simplemente iniciar sesión en un webapi. Una vez que la recuperación fue exitosa, me da el token de portador, el nombre de usuario, etc.
Y luego simplemente almacene esos valores en una variable y luego nombre de usuario en la ventana emergente.
Pero cuando hago clic en el botón, no espera a que la llamada de recuperación tenga éxito y establece la variable de página antes de que se muestre el valor como indefinido o en blanco.
Posteriormente, el tercer o cuarto intento de hacer clic en el botón de inicio de sesión es exitoso y muestra el nombre de usuario.
Además, una vez que se cierra la ventana emergente, esos valores desaparecen. ¿Cómo puedo almacenar el token y otra información para usarlo en las próximas llamadas de búsqueda posteriores?
var respjson = ""; var token = ""; document.getElementById('btnLogin').onclick = function () { var robject = ""; robject = Login(); setTimeout( function () { //do something special if (robject == '0' || robject == '' || robject == 'undefined' || robject == null) { console.log("var not set: " + robject); } else { console.log(robject); $("#lbluname").html('<p>Set UName</p>'); $("#lbluname").html('<p>' + robject.userName + '</p>'); $("#lblToken").html('<p>Set Token</p>'); $("#lblToken").html('<p>' + token + '</p>'); } }, 5000); }; function Login() { var credentials = { "username": $("#txtUName").val(),"password": $("#txtPass").val() } console.log(credentials); chrome.runtime.sendMessage({ greeting: "Login", cred: credentials }, function (response) { respjson = JSON.parse(response.farewell); token = respjson.access_token; }); return respjson; }