Is it possible to put a timer before running a post / reload on the page?

1

I have the function below that at the end of the operation of a reload on the page in order to update the statuses.

Would it be possible to put a wait time to run this reload?

  function ConsultarChangeDll(numero) {
        var status = $("#sclStatusGrid_" + numero).val();
        if (status == "L") {
            swal({
                title: "",
                text: "Confirmar operação?",
                type: "warning",
                showCancelButton: true,
                confirmButtonClass: "btn-danger",
                confirmButtonText: "Sim",
                cancelButtonText: "Não",
                closeOnConfirm: false,
                closeOnCancel: false
            },
                function (isConfirm) {
                    if (isConfirm) {
                        ControleEstoqueFranquia(numero);
                        swal("", "Operação realizada.", "success");
                        window.location.reload();
                    } else {
                        swal("", "Operação cancelada.", "error");
                        window.location.reload();
                        return;
                    }
                });
    
asked by anonymous 17.04.2018 / 14:33

2 answers

1

You can use setTimeout

// a pagina será atualizada em 5 segundos.
window.setTimeout(window.location.reload, 5000);

On the other hand, this SweetAlert returns a Promise , so you can expect the user to close the dialog.

var timeout = window.setTimeout(window.location.reload, 5000);
swal("", "Operação realizada.", "success").then(function () {
    window.clearTimeout(timeout)
    window.location.reload()
})
    
17.04.2018 / 14:39
1

You can use the global function setTimeout , it is used to create a delay simple before the single execution of some function passed in the parameters.

setTimeout(teste, 2000); // vai executar a função 'teste' depois de 2000 milisegundos (ou 2 segundos)
function teste() {
     console.log("Executou depois de 2 segundos");
}

There is also the setInterval function . This method performs a function in intervals of time, this means that it will run several times until you stop it:

var contador = 0;
var intervalo = setInterval(teste, 2000); // vai executar a função 'teste' de 2 em 2 segundos.
function teste() {
    console.log("Executou depois de 2 segundos");
    contador++;
    if(contador > 10) {
        console.log("Cancelou a execução");
        clearInterval(intervalo); // cancela a execução do 'intervalo'
    }
}

In your code you can do:

function ConsultarChangeDll(numero) {
    var status = $("#sclStatusGrid_" + numero).val();
    if (status == "L") {
        swal({
            title: "",
            text: "Confirmar operação?",
            type: "warning",
            showCancelButton: true,
            confirmButtonClass: "btn-danger",
            confirmButtonText: "Sim",
            cancelButtonText: "Não",
            closeOnConfirm: false,
            closeOnCancel: false
        },
            function (isConfirm) {
                if (isConfirm) {
                    ControleEstoqueFranquia(numero);
                    swal("", "Operação realizada.", "success");
                    setTimeout(recarregarPagina, tempo); // substitua 'tempo' pelo tempo em milisegundos
                } else {
                    swal("", "Operação cancelada.", "error");
                    setTimeout(recarregarPagina, tempo); // substitua 'tempo' pelo tempo em milisegundos
                    return;
                }
            });

So, you put reload inside the function:

function recarregarPagina() {
     window.location.reload();
}

Another option would be for you to create a Timer object. This answer by Sergio explains in detail how to create this object.

    
17.04.2018 / 14:39