Wykorzystuję zapytania asynchroniczne do pobierania danych z restAPI. W trakcie rozwoju projektu okazało się, że zaleta ajaksa jest w tym przypadku wadą. Pokażę w czym rzecz na kodzie poniżej.
To fragment zapytania:
success:
function( result ,status, xhr) {
var json = jQuery.parseJSON(result);
alert(json.message);
console.log("done");
xhr.getResponseHeader('Set-Cookie');
if (json.message=="Success! Logged in.")
{
isAuthenticated();
console.log(User);
console.log(User.getType());
onLoginSuccessful(User.getType());
}
},
Funkcja isAuthenticated() również zawiera zapytanie ajax które uzupełnia dane w klasie User. Problem w tym, że kod:
console.log(User);
console.log(User.getType());
onLoginSuccessful(User.getType());
wykonuje się szybciej niż funkcja isAuthenticated() i przy pierwszym uruchomieniu User jest niezdefiniowany. Jak to rozwiązać? EDIT: rozwiązanie to dodanie do zapytania:
async: false,