لا خيوط سلوك حدة التقييم () تختلف عبر المتصفحات المختلفة؟

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

  •  19-08-2019
  •  | 
  •  

سؤال

وأنا حاليا تسجيل تطبيق AJAX مع الرسائل التي تتضمن أوقات تفاعلات معينة. لذلك ليس لدي بضعة أماكن حيث يتبع رمز نمط مثل هذا:

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

ما أنا نتطلع إلى القيام به هو منفصل توقيت في وظيفة مكتبة واحدة، والتي تأخذ وظيفة كمعلمة، لتبدو شيئا مثل:

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

و(بناء الجملة قد أكون مخطئا، وأنا لست على دراية جدا مع جافا سكريبت)

وذلك أن ثم بدلا من القيام توقيت أود أن تفعل فقط:

time(this.doFunction);

وسؤالي هو، هل المتصفحات المختلفة لها سلوك مختلف عندما يتعلق الأمر eval()؟ مثل اطلاق النار قبالة حدة التقييم في موضوع جديد، مما يجعل لي توقيت غير صحيحة؟

وسيكون موضع تقدير أي نصيحة أخرى على التوقيت.

هل كانت مفيدة؟

المحلول

ولا. جميع المتصفحات هي ترابط واحد في محرك جافا سكريبت. وأظن أنه يمكنك أيضا حل هذه المشكلة ببساطة عن طريق استدعاء toTime () كدالة بدلا من استخدام وحدة التقييم (). قد ترغب في النظر في كائن جافا سكريبت الحجج و جافا سكريبت "<ل أ href = "http://docstore.mik.ua/orelly/webprog/jscript/ch07_05.htm" يختلط = "نوفولو noreferrer"> دعوة "و" تطبيق "أساليب لإرسال بشفافية الحجج التي تم تمريرها إلى الخارجي الخاص بك "الوقت" وظيفة إلى وظيفة "toTime" الداخلية.

نصائح أخرى

ويجب أن تكون وحدة التقييم متزامن.

ويجب عدم استخدام eval() لكن toTime.call()، لأنك يجب تجنب استخدام وحدة التقييم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top