10
votes

Heure d'exécution maximale pour JavaScript

Je sais que c'est-à-dire que c'est-à-dire et firefox a des limites pour l'exécution JavaScript ( Source 1 , Source 2 ). Basé sur le nombre de déclarations exécutées, j'ai entendu dire 5 millions de personnes dans IE et sur la base du nombre de secondes de Firefox: il est 10 secondes par défaut pour ma version.

La chose que je ne reçois pas est de quels cas passeront sur ces limites:

  1. Je suis sûr qu'une boucle géante passera sur la limite pour l'heure d'exécution

  2. Mais un handiteur d'événements sera-t-il sur la limite, si elle est elle-même, son temps d'exécution est sous la limite mais si elle survient plusieurs fois?

    Exemple:

    permet de dire que j'ai une minuterie sur ma page, qui exécute du javascript toutes les 20 secondes. L'heure d'exécution du gestionnaire de minuterie est de 1 seconde. Firefox et IE traitent-ils chaque appel de la fonction de minuterie séparément, de sorte qu'il ne dépasse jamais la limite, ou est-ce que Firefox / Ie ajoute le temps de chaque appel ainsi après la fin du gestionnaire, donc après 200 secondes sur mon site (avec la minuterie appelée 10 fois) une erreur se produit même si le gestionnaire de minuterie est seulement 1 seconde long?


0 commentaires

3 Réponses :


1
votes

Le gestionnaire d'événements est considéré comme un nouveau contexte d'exécution - la limite de temps est réinitialisée.

Si vous avez besoin de faire encore plus de calcul, jetez un coup d'œil aux webworkers.


0 commentaires

8
votes

L'article suivant de NICHOLAS C. ZAKAS discute de la manière et du moment où différents navigateurs interrompent longtemps JavaScript Code:


0 commentaires

0
votes

Je suis aussi coincé dans ce genre d'erreur JS. Je reçois également la solution, malheureusement uniquement pour IE, qui indique de modifier la commande Registry (Regedit Command) et de mettre à jour le nombre de commandes JS pour permettre. En savoir plus ici http://support.microsoft.com/?kbid=175500 .

Mais cela ne semble pas être une bonne solution pour moi BCoz si vous développez une application Web, vous ne pouvez pas demander à chaque utilisateur d'utiliser uniquement IE et mettez à jour son registre système.

En tant que solution de contournement: si vos données à traiter à la fin du client sont vraiment grandes, vous pouvez mettre des retards manuels entre le traitement des événements corrects. Pour ex. S'il y a 100 événements de toute tâche que vous souhaitez traiter, vous pouvez les casser dans 10 jeux de 100 et traiter chacun d'eux à 100 ms. Savoir comment faire cela suivez ci-dessous Link:

http: // www .nczonline.net / Blog / 2009/01/13 / Speed-up-Your-Javascript-Part-1 /


1 commentaires

L'OP n'a pas vraiment demandé "solution", vient de se demander ce qui détermine ce comportement dans chaque navigateur.