2010-08-05 34 views
32

Dưới đây là một lạ một:JavaScript alert() tiến hệ thống thời gian bằng cách 12ms

tôi đã làm việc trên đồng bộ hóa một bộ đếm thời gian hoạt Javascript với một máy chủ từ xa và nhận thấy timer của tôi (dựa trên đối tượng Date()) đã đạt được khoảng 12ms so với máy chủ từ xa của tôi trên mỗi lần làm mới trang. Tôi đã thu hẹp nó xuống hàm JavaScript alert().

Tôi đã tạo thử nghiệm sau và được xác minh với 2 đồng hồ được đồng bộ hóa mà thời gian hệ thống của tôi sẽ tăng 1 giây sau mỗi lần làm mới trang 83-84. Có ai thấy điều này trước đây không?

<html> 
<head> 
</head> 
<body> 
<script type="text/javascript"> 
    alert('hello'); 
</script> 
</body> 
</html> 

Tôi đang sử dụng IE7 trên XP SP3. Xin vui lòng cho tôi biết tôi không chỉ phát điên!


EDIT:

Tôi thực sự không quan tâm đến tính chính xác của giờ javascript. Vấn đề thực sự là cuộc gọi hàm JavaScript alert() đang tăng thời gian hệ thống thực tế của tôi lên 12ms.

+1

Điều này có xảy ra trên máy ảo không? –

+0

Bạn biết rằng có sự chậm trễ giữa việc gửi và nhận dữ liệu từ máy chủ không? – alopix

+0

@alopix Không có gửi và nhận trong ví dụ của mình, đây là một lỗi khá thú vị nếu đúng. – robertc

Trả lời

2

Vâng,

nhiều khả năng bạn bị điên, vì bạn đang tính toán thời gian biểu JavaScript chính xác.

Điều này giải thích rất nhiều về điều đó: http://ejohn.org/blog/accuracy-of-javascript-time/

+12

Nhưng OP tuyên bố rằng * thời gian hệ thống * của anh ấy bị thay đổi. Đây là cái gì khác, phải không? –

+2

Những gì tôi đang nói về không phải là một sự chậm trễ trong bộ đếm thời gian javascript của tôi - Thời gian hệ thống thực tế của tôi đang được sửa đổi bởi việc thực hiện hàm alert(). Tôi đã làm mới trang này một vài trăm lần và bây giờ khi tôi kéo lên đồng hồ hệ thống của tôi, nó là 5 giây trước đồng hồ của tôi mà tôi vừa đồng bộ với hệ thống của tôi. – Derek

+2

@Derek: Tôi luôn biết rằng JavaScript là ** ác **;) (* xin lỗi vì không cung cấp nhận xét hữu ích hơn *). –

Các vấn đề liên quan