我在同一台机器上运行JavaServlet并将其作为JavascriptApp运行。Javascript时间与Java时间不同
该servlet输出当前时间:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletOutputStream os = resp.getOutputStream();
os.print("" + System.currentTimeMillis());
}
的JS获取时间:
$.get("UserdataServlet", function(data) {
console.log("dy " + data);
console.log("my " + Date.now());
});
和版画有时价值观是这样的:
dy 1433690185937
my 1433690185935
怎么可能呢? Servlet的时间是在JavaScript的Date.now()之前进行的?而且两者都在同一台机器上运行。
“我的1433690185935”应该始终大于或等于“dy 1433690185937”。但它怎么会变得更小
它是从浏览器的某种优化?
一些例子:
GET http://localhost:8081/Planetserverlinux/UserdataServlet
dy 1433691257707
my 1433691257717
GET http://localhost:8081/Planetserverlinux/UserdataServlet
dy 1433691258716
my 1433691258719
GET http://localhost:8081/Planetserverlinux/UserdataServlet
dy 1433691259700
my 1433691259715
GET http://localhost:8081/Planetserverlinux/UserdataServlet
dy 1433691260700
my 1433691260720
GET http://localhost:8081/Planetserverlinux/UserdataServlet
dy 1433691261700
my 1433691261712
GET http://localhost:8081/Planetserverlinux/UserdataServlet
dy 1433691262704
my 1433691262701
的区别这个扩展的讨论为2ms。所以,是的,在服务器,然后再运行JS代码。 1/500秒后。 :) –
但“Date.now()”应该始终是geater或等于服务器时间...不少于 – wutzebaer
你是对的。 Withouth知道实际上发生了什么,我会将其视为服务器机制。 –