Cita: si la consulta fue respondida y la variable es global, aunque sea una solicitud asíncrona, debería estar actualizada.
El problema es que no se puede saber de antemano cuándo será actualizada dicha variable global (
errores_personal_cnt
), porque como bien indicas, la petición es asíncrona.
No tenemos más información de tu código, pero quizá es algo que se pueda replantear de otra forma. Aunque siempre puedes hacer que la función
validar devuelva una promesa:
Código:
var errores_personal_cnt = 0;
function validar(dato_a_validar, url, secc, control)
{
var datastr = url + '?secc=' + secc + '&dato=' + dato_a_validar;
return axios.get(datastr)
.then(response => {
var estado = response.data;
"Respuesta: " + console.log(estado);
if (estado != 1)
{
control.style.borderColor = "red";
control.style.backgroundColor = "red";
control.title = estado;
errores_personal_cnt++;
errores_personal += "\t- " + estado + "\n";
return false;
}
else
{
control.style.borderColor = "lightgreen";
control.style.backgroundColor = "lightgreen";
control.title = "Correcto";
return true;
}
})
.catch(response => {
"Respuesta: " + console.log(response.data);
console.log("Estado: error -> " + response.data);
control.style.backgroundColor = error_app;
control.style.borderColor = error_app;
control.title = "Ha ocurrido un error con la aplicación. Intentalo nuevamente en unos segundos.";
errores_personal_cnt++;
errores_personal += "\t- ha ocurrido un error en la validación\n";
return false;
});
}
Y meter el resto de tu código en una función anónima de este tipo:
Código Javascript
:
Ver original(async () => {
// ...
var valor = await validar(dato_a_validar, url, secc, control); // esperamos a que la promesa se resuelva
console.log(valor); // true o false
console.log(errores_personal_cnt); // la variable actualizada
})();