Le comportement des threads de eval () varie-t-il entre les différents navigateurs?

StackOverflow https://stackoverflow.com/questions/461138

  •  19-08-2019
  •  | 
  •  

Question

Je suis en train de consigner une application AJAX avec des messages qui incluent les heures de certaines interactions. J'ai donc quelques endroits où le code suit un modèle tel que celui-ci:

var startTime = new Date();
this.doFunction();
var endTime = new Date();
logger.log("doFunction took " + (endTime - startTime) + " milliseconds.");

Ce que je cherche à faire est de séparer le minutage en une fonction de bibliothèque, qui prend une fonction en tant que paramètre, pour ressembler à quelque chose comme:

time : function(toTime) {
    var startTime = new Date();
    eval(toTime);
    var endTime = new Date();
    logger.log(toTime + " took " + (endTime - startTime) + " milliseconds.");
} 

(La syntaxe est peut-être fausse, je ne connais pas trop JavaScript)

Alors, au lieu de faire le timing, je ferais simplement:

time(this.doFunction);

Ma question est la suivante: les différents navigateurs ont-ils un comportement différent en ce qui concerne eval () ? Par exemple, lancer l'eval dans un nouveau thread, rendant ainsi mon timing incorrect?

Tout autre conseil sur le timing serait apprécié.

Était-ce utile?

La solution

Non. Tous les navigateurs sont mono-threadés dans le moteur javascript. Je suppose que vous pouvez également résoudre ce problème simplement en appelant toTime () en tant que fonction au lieu d’utiliser eval (). Vous voudrez peut-être examiner l’objet arguments et le javascript javascript " < a href = "http://docstore.mik.ua/orelly/webprog/jscript/ch07_05.htm" rel = "nofollow noreferrer"> appel " et "appliquer" méthodes permettant de transférer de manière transparente les arguments transmis à votre " time " fonction à l'intérieur " toTime " fonction.

Autres conseils

Eval doit être synchrone.

Vous ne devriez pas utiliser eval () , mais toTime.call () , car vous devriez éviter d'utiliser eval.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top