Frage

Ich bin zur Anmeldung eine AJAX-Anwendung mit Nachrichten, die die Zeiten bestimmter Interaktionen umfassen. Also ich habe ein paar Stellen, wo der Code ein Muster wie dies folgt:

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

Was ich aussehen zu tun ist, trennt das Timing in eine Library-Funktion, die eine Funktion als Parameter, so etwas wie aussehen:

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

(Syntax falsch sein kann, ich bin nicht allzu vertraut mit JavaScript)

Damit dann stattdessen das Timing zu tun, würde ich nur tun:

time(this.doFunction);

Meine Frage ist, haben verschiedene Browser unterschiedliche Verhalten haben, wenn es um eval() kommt? Wie die eval in einen neuen Thread, so Rendering mein Timing nicht richtig?

abzufeuern

Jede andere Ratschläge zum Zeitpunkt geschätzt werden würde.

War es hilfreich?

Lösung

Nein. Alle Browser sind Single-Thread in der JavaScript-Engine. Ich vermute, dass Sie auch dieses Problem einfach durch den Aufruf Totime () als Funktion anstelle der Verwendung von eval () lösen können. Sie können in die Javascript Argumente Objekt aussehen soll und die javascript „ nennen “und‚Übernehmen‘Methoden transparent, die Argumente zu Ihrem äußeren weitergegeben weiterleiten „Zeit“ -Funktion auf die innere „totime“ Funktion.

Andere Tipps

Eval sollte synchron sein.

Sie sollten nicht verwenden eval() aber toTime.call(), weil Sie sollten mit eval vermeiden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top