문제

현재 특정 상호 작용 시간이 포함 된 메시지로 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.");
} 

(구문이 잘못되었을 수 있습니다. JavaScript에 너무 익숙하지 않습니다)

그러면 타이밍을하는 대신 그냥 할 것입니다.

time(this.doFunction);

내 질문은, 다른 브라우저가 다른 동작이 다른 동작을 가지고 있다는 것입니다. eval()? 예를 들어 평가를 새 스레드로 발사하여 타이밍을 잘못 만듭니다.

타이밍에 대한 다른 조언에 감사드립니다.

도움이 되었습니까?

해결책

아니요. 모든 브라우저는 JavaScript 엔진에서 단일 스레드입니다. Totime ()을 eval ()를 사용하는 대신 함수로 호출 하여이 문제를 해결할 수도 있다고 생각합니다. JavaScript를 살펴보고 싶을 수도 있습니다 논쟁 객체와 JavaScript "전화"및"적용 "방법은 외부"시간 "기능으로 전달 된 인수를 내부"totime "함수로 전달합니다.

다른 팁

평가는 동기식이어야합니다.

사용해서는 안됩니다 eval() 하지만 toTime.call(), 당신은 평가를 피해야하기 때문에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top