Is it possible to set a timer before running a post/Reload on the page?

Asked

Viewed 184 times

1

I have the Function below that at the end of a Reload operation on the page in order to update the status.

It would 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;
                    }
                });

2 answers

1


You can use the setTimeout

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

on the other hand, this SweetAlert returns a Promise, then 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()
})

1

You can use the global function setTimeout, it serves to create a delay simple before 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 time, that means it will run several times until you tell it to stop:

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 the reload within the function:

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

Another option would be to create a Timer object. That answer Sergio explains in detail how to create this object.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.