Tengo la solicitud de ajax muy lenta, por lo que mi matriz de estadísticas no se actualiza la segunda vez que quiero acceder a ella. Parece que la solicitud ajax se ejecuta después de que se procesa todo el código. ¿Hay alguna manera de esperar a que se ejecute la solicitud ajax antes que el resto de mi código?
console.log(stats); fetchREST(false, (url+selectedID+"/solve"), (parseInt(button.id)+1), function(data){ if (data.success) { console.log("richtig"); stats.right++; } else { console.log("falsch"); stats.wrong++; } }); console.log(stats); function fetchREST(isGET, path, answer, callback) { var httpRequest = new XMLHttpRequest(); httpRequest.onreadystatechange = function() { if (httpRequest.readyState === 4) { if (httpRequest.status === 200) { var data = JSON.parse(httpRequest.responseText); if (callback) callback(data); } } }; let email = "*"; let pw = "*"; if(isGET) { // not needed } else { let solutionArray = '[' + answer + ']'; console.log(solutionArray); httpRequest.open('POST', path, true); httpRequest.setRequestHeader("Content-Type", "application/json"); httpRequest.setRequestHeader("Access-Control-Allow-Origin", "*"); httpRequest.setRequestHeader("Access-Control-Allow-Headers", "*"); httpRequest.setRequestHeader("Authorization", "Basic " + window.btoa(email + ":" + pw)); httpRequest.send(solutionArray); } }EDITAR Lo arreglé cambiando
httpRequest.open('POST', path, true);a
httpRequest.open('POST', path, false);Ahora el async se establece en falso y los métodos de envío esperan hasta que se recibe una respuesta.
Lo arreglé yo solo cambiando
httpRequest.open('POST', path, true);a
httpRequest.open('POST', path, false);Ahora el async se establece en falso y los métodos de envío esperan hasta que se recibe una respuesta.