Domanda

Attualmente sto registrando un'applicazione AJAX con messaggi che includono i tempi di determinate interazioni. Quindi ho un paio di posti in cui il codice segue uno schema come questo:

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

Quello che sto cercando di fare è separare i tempi in una funzione di libreria, che accetta una funzione come parametro, per assomigliare a:

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

(La sintassi potrebbe essere sbagliata, non ho troppa familiarità con JavaScript)

In modo che invece di fare i tempi farei solo:

time(this.doFunction);

La mia domanda è: browser diversi hanno comportamenti diversi quando si tratta di eval () ? Come sparare l'eval in un nuovo thread, rendendo così i miei tempi errati?

Ogni altro consiglio sui tempi sarebbe apprezzato.

È stato utile?

Soluzione

No. Tutti i browser sono a thread singolo nel motore JavaScript. Ho il sospetto che tu possa anche risolvere questo problema semplicemente invocando toTime () come una funzione invece di usare eval (). Potresti voler esaminare l'oggetto javascript e l'oggetto javascript " < a href = "http://docstore.mik.ua/orelly/webprog/jscript/ch07_05.htm" rel = "nofollow noreferrer"> call " e " applica " metodi per inoltrare in modo trasparente gli argomenti passati al tuo "tempo" esterno funzione nell'interiore "toTime" la funzione.

Altri suggerimenti

Eval dovrebbe essere sincrono.

Non dovresti usare eval () ma toTime.call () , perché dovresti evitare di usare eval.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top