Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/05/2020, 11:26
7sistemas
 
Fecha de Ingreso: marzo-2010
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 14 años, 1 mes
Puntos: 2
Axios: valor correcto del contador dentro del then pero no afuera

Buenas!
Tengo una función que hace una llamada a axios.get. Dentro del .then, hay un contador que se debe incrementar. Ahí adentro, el valor es correcto, pero cuando consulto el valor del contador fuera de esa función, no está actualizado a pesar de haberse cumplido la solicitud, y no entiendo por qué.

He leído y consultado un montón pero nadie me puede responder por qué.

No quiero cambiar el código otra vez, dado que si la consulta fue respondida y la variable es global, aunque sea una solicitud asíncrona, debería estar actualizada.

Código:
var errores_personal_cnt = 0;
function validar(dato_a_validar, url, secc, control)
{
        var datastr = url + '?secc=' + secc + '&dato=' + dato_a_validar;
        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;
        });

}