Visualizzazione dei risultati da 1 a 3 su 3

Discussione: aiuto con timer

  1. #1
    Utente di HTML.it L'avatar di leaf
    Registrato dal
    Oct 2012
    Messaggi
    316

    aiuto con timer

    ciao, ho applicazione che deve fare il seguente:
    1) ogni 1000ms chiamata ajax per eseguire query in db
    2) se ajax ritorna un risultato, la funziona countdown() viene chiamata
    3) ognivolta che la funzione countdown viene chiamata viene cancellato un eventuale timer pre-esistente e un nuovo timer viene fatto partire
    4) le chiamate ajax (punto 1) devono continuare in background indipendentemente dal timer

    Al momento il problema è che quando resetto il timer per il countdown (dentro la funziona countdown()) il setInterval iniziale (punto 1) si blocca. A me serve che continui invece a funzionare indipendentemente dal'altro countdown timer.

    Grazie!

    Questo è il codice. ho commentato la chiamata ajax per semplificare

    codice:
    $(document).ready(function() {
        $('#myLog').hide();
    
       //questo deve essere eseguito continuamente, per sempre
        setInterval(function(){setTimer(0);} , 1000);
    });
    
    function setTimer(){
        canvas = document.getElementById("myCanvas");
        log = document.getElementById("myLog");
        
       //chiamata per esempio
        countdown(5, 0);
    
        //$.ajax ({
        //    url: "ajax.php",
        //    success: function( result ) {
        //       countdown(result, 0);
        //    }
        //});
    
    }
    
    function countdown(minutes, seconds) {
        canvas.style.color = "black";
        canvas.innerHTML = "00:00";
    
       //reset countdown. funziona ma influisce anche su setInterval iniziale
        var id = window.setTimeout(null,0);
        while (id--)
            window.clearTimeout(id);
    
       //da qui in poi funziona tutto ok
    
        if(minutes == "OFF"){
            canvas.style.color = "#383838";
            canvas.innerHTML = "OFF";
            return;
        }
    
        var endTime, hours, mins, msLeft, time;
    
        function twoDigits( n )
        {
            return (n <= 9 ? "0" + n : n);
        }
    
        function updateTimer()
        {
            canvas.style.color = "black";
                canvas.innerHTML = "00:00"; //clear canvas
                msLeft = endTime - (+new Date);
                if ( msLeft < 1000 )                
                    flashyText();
                else {
                    canvas.style.color = "white";
                    time = new Date( msLeft );
                    hours = time.getUTCHours();
                    mins = time.getUTCMinutes();
                    canvas.innerHTML = (hours ? hours + ':' + twoDigits( mins ) : mins) + ':' + twoDigits( time.getUTCSeconds());
                    setTimeout( updateTimer, time.getUTCMilliseconds() + 500 );
                }
            }
    
        endTime = (+new Date) + 1000 * (60*minutes + seconds) + 500;
        updateTimer();
    }
    
    function flashyText() {
        var count = 1000000,
        timer = setInterval(function() {
            count--;
            if( count%2 == 1) {
                canvas.style.color = "red";
                canvas.innerHTML = "00:00"
            }
            else {
                canvas.style.color = "black";
                canvas.innerHTML = "00:00";
            }
            if( count == 0) clearInterval(timer);
        },1000);
    }

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,029
    ciao leaf. come da regolamento chiudo la discussione per titolo troppo generico.

    riproponi conforme
    Ciro Marotta - Programmatore PHP - MySql - ZEND FRAMEWORK 2
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,029
    .
    Ciro Marotta - Programmatore PHP - MySql - ZEND FRAMEWORK 2
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2018 vBulletin Solutions, Inc. All rights reserved.