Mi chiedo se questo codice sta per caricare il client poiché il timeout è troppo lungo?setTimeout() influisce sulle prestazioni
//and update this again in a bit
setTimeout(function() {
updateWeather(lat,lng);
}, 60000);
Mi chiedo se questo codice sta per caricare il client poiché il timeout è troppo lungo?setTimeout() influisce sulle prestazioni
//and update this again in a bit
setTimeout(function() {
updateWeather(lat,lng);
}, 60000);
Non che il codice da soli. Il sistema è inattivo per quel minuto. Finché updateWeather non ha gravi problemi di prestazioni e l'intervallo è breve, setTimeout non sarà un prodotto (e credo che tu intenda setInterval, non setTimeout per i controlli ricorrenti)
Scelto la tua risposta dato che hai menzionato il setInterval - Suppongo che dovrei usare setInterval in questo caso, poiché questo codice di esempio è in realtà all'interno della funzione updateWeather stessa, alla fine della funzione. E 'un cattivo idéa, c'è un miglioramento delle prestazioni nell'uso di setInterval su setTimeout o sono uguali, setInterval è solo un modo pratico per non dover fare questa auto-chiamata che faccio? –
Non l'ho ancora messo a punto, ma in termini di eleganza, setInterval è più bello. Adesso gestirò un benchmark. – bobbybee
La risposta alla tua domanda dipende:
Un setTimeout standalone sarebbe non ferire il browser; tuttavia, se stai facendo ripetutamente la stessa cosa, farebbe la differenza.
Date un'occhiata al seguente sito Web per ulteriori delucidazioni ...
Il timer di 60 secondi è implementato dalla magia nel sistema operativo: in pratica non aggiunge carico della CPU durante i 60 secondi che sta aspettando.
Immagino che updateWeather()
stia interrogando una risorsa esterna, quindi la risposta alla tua domanda è un semplice "no, va bene". (Dato che il tempo non cambia quello spesso, lo farei comunque 5 minuti, vedi il commento qui sotto sulla durata della batteria.) (Ancora meglio: vedi se il fornitore di dati meteo ti fornisce un campo che ti dice quando il prossimo aggiornamento sarà essere, e utilizzare un setTimeout
basato su quello.)
In altre situazioni, ad esempio se sono stati raccolti alcuni tipi di dati per quei 60 secondi e quindi andare ed elaborarli in una volta, ciò potrebbe causare un picco di carico pesante. Che potrebbe essere notato dall'utente (ad esempio, tutte le animazioni diventano a scatti una volta ogni 60 secondi). In tal caso è preferibile utilizzare un timer di 5 secondi e elaborare 5 secondi di dati alla volta.
Al contrario, se si utilizza la rete su un dispositivo mobile, è necessario considerare la durata della batteria: la sveglia e la ricerca di una connessione possono dominare. Quindi estendere un tempo di polling da 60 secondi a 120 secondi può letteralmente raddoppiare la durata della batteria. Ilya Grigorik ha un ottimo capitolo su questo nel suo libro, ad alta Networking Browser Performance http://shop.oreilly.com/product/0636920028048.do ... eccola: http://chimera.labs.oreilly.com/books/1230000000545/ch08.html#ELIMINATE_POLLING
Perché sarebbe facendo notare per un minuto causa più carico che non fare nulla per un tempo più breve? ;-) – RobG
No, non lo è. Tuttavia, un timeout molto breve può essere: http://stackoverflow.com/a/18832977/1768303 – Noseratio
Nessun effetto significativo, 'setTimeout' viene eseguito in un ciclo di eventi, non blocca o danneggia l'esecuzione. –