¿El comportamiento de subprocesos de eval () varía en los diferentes navegadores?

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

  •  19-08-2019
  •  | 
  •  

Pregunta

Actualmente estoy registrando una aplicación AJAX con mensajes que incluyen los tiempos de ciertas interacciones. Así que tengo un par de lugares donde el código sigue un patrón como este:

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

Lo que estoy buscando hacer es separar el tiempo en una función de biblioteca, que toma una función como parámetro, para parecerse a:

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

(La sintaxis puede ser incorrecta, no estoy muy familiarizado con JavaScript)

Entonces, en lugar de hacer el tiempo, simplemente haría:

time(this.doFunction);

Mi pregunta es, ¿los diferentes navegadores tienen un comportamiento diferente cuando se trata de eval () ? ¿Como disparar la evaluación a un nuevo hilo y hacer que mi sincronización sea incorrecta?

Cualquier otro consejo sobre el tiempo sería apreciado.

¿Fue útil?

Solución

No. Todos los navegadores tienen un solo subproceso en el motor de JavaScript. Sospecho que también puede resolver este problema simplemente invocando toTime () como una función en lugar de usar eval (). Es posible que desee examinar los argumentos de JavaScript y el objeto " < a href = "http://docstore.mik.ua/orelly/webprog/jscript/ch07_05.htm" rel = "nofollow noreferrer"> llamar " y " aplicar " métodos para reenviar de forma transparente los argumentos pasados ??a su "tiempo" externo función para el interior '' toTime '' función.

Otros consejos

Eval debe ser sincrónico.

No debe usar eval () sino toTime.call () , porque debe evitar usar eval.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top