Come evitare che Javascript vi rallenti il browser
Posted by Davide | Filed under Javascript
Uno dei problemi standard di chi si occupa di Javascript e’ quello relativo alla semplicita’ con cui un blocco di codice particolarmente dispendioso (in termini di tempo d’esecuzione e risorse) vi faccia freezare il browser per un tot di secondi.
Il problema e’ relativo al fatto che Javascript e’ un linguaggio single-threaded; in parole povere, mentre per esempio si eseguono cicli di istruzioni lunghe che si interfacciano con la struttura DOM di una pagina, il browser non trova una finestra di tempo dove poter fare un refresh del proprio contenuto, congelandosi.
Mi e’ capitato giustappunto oggi, dovendo lavorare sul DOM di una tabella piuttosto lunga, andando alla ricerca del posto esatto dove inserire nuove righe pervenutemi tramite Ajax.
Dato che il fulcro del progetto e’ proprio la prestazione dell’applicativo, sono subito andato alla ricerca di una possibile soluzione. Beh, ho scoperto un po’ di cose.
In questo articolo di debuggable.com viene proposta un’ottima soluzione (gia’ sperimentata e funzionante!) basata sull’inserire le nostre istruzioni ciuccia-risorse all’interno di una coda; ogni istruzione sara’ eseguita ed intervallata da un tot di millisecondi di pausa,
Qualcosa di simile e’ stato implementato anche in jQuery; ancora non mi sono documentato abbastanza, ma sembra una libreria, gestita direttamente dal core del framework, che si occupa di rendere il piu’ possibile smooth le animazioni.