我在同一台机器上运行JavaServlet和JavascriptApp。
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
答案 0 :(得分:3)
由于您在Windows机器上运行,因此获取时间的Java调用将四舍五入到最接近的16毫秒。 Javascript调用不限于此限制。
有了这些知识,一个人就很容易与另一个人不同,而且不按顺序。
的SO的详细讨论