Ho qualche codice javascript/jquery (per un sito Web interno) che esegue molta elaborazione lato client su un grande tavolo. Funziona un po 'lentamente, ma va bene.Come lasciare javascript "breath"
Il problema è che congela il browser mentre esegue i cicli che deve eseguire. Questo ha due effetti non desiderati:
- La filatrice elaborazione (un GIF animato, ma anche provato spin.js e che ha lo stesso problema) congela.
- Se ci sono abbastanza righe della tabella, i loop impiegano molto tempo e il browser riporta uno script che non risponde
C'è un modo per avere una sorta di una dichiarazione "respiro" nel codice, tale che ogni (diciamo) 100 iterazioni, si interrompe per far girare lo spinner e il browser sappia che lo script sta ancora lavorando su di esso? Qualcosa di simile (pseudo codice):
for (i=0;i<20000;i++)
{
fnProcessRow();
if (i % 100 == 0) breath();
}
Sareste in grado di pubblicare il codice pertinente con cui si verificano problemi di prestazioni? Forse questo può essere prima ottimizzato prima di considerare altri costrutti artificiali "in attesa" –
Sì, ma solo se si sta utilizzando una funzione autoesecutiva anziché un ciclo for. Puoi anche trasferirlo a un webworker nei browser che lo supportano. –
è possibile eseguire una qualsiasi elaborazione sul server per alleggerire il carico sul front-end? – Evan