5

Da quello che ho capito History.js è un polyfill per HTML5 History/State APIs. Pertanto, sui browser moderni, dovrebbe semplicemente utilizzare popstate per ascoltare le modifiche dell'URL. Quindi, perché su Chrome di recente riesco a vedere il timer che spara ogni 250 ms? Sembra così inutile e fa scattare il garbage collector ogni pochi secondi.Perché history.js utilizza setInterval (.., 250)?

Dai un'occhiata a questo ufficiale History.js demo.

History.js demo page firing timer every 250ms

+0

Perché non usi il JS nativo? – RomanGorbatko

+1

@RomanGorbatko Abbiamo bisogno di supportare [IE9 e vecchi browser Android] (http://caniuse.com/#feat=history). Pertanto, è necessario utilizzare un polyfill (non è vero?). –

+0

non ho ricevuto alcun record di Timer Fire in chrome latest – NavaRajan

risposta

0

non so il codice History.js, ma la lettura attraverso di essa, credo @apsillers è corretta.

È configurato su un intervallo di 250 ms tra gli elementi della coda. Alcune delle funzioni in coda in tale coda richiedono l'acquisizione dello stato Cronologia. Questi elementi costringono il flushing a mettere in pausa chiamandolo per essere occupato.

Per quanto riguarda il motivo per cui questo accade nei browser HTML5 anche a me sembra che History.JS non commuta semplicemente un interruttore se è HTML5 e quindi non fa nulla. Sul loro github si afferma uno dei loro obiettivi da:

fornire un'esperienza compatibile con croce per tutti i browser HTML5 (tutti implementare l'API HTML5 Storia un po 'diverso causando diversi comportamenti e talvolta bug - History.js correzioni di questo garantendo l'esperienza è come previsto/lo stesso/grande in tutti i browser HTML5)

Se History.js sta ancora facendo anche un po 'di lavoro che coinvolge in coda, vi assicuriamo che avrebbero usato il timeout occupato.