我在同一臺機器上運行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知道實際上發生了什麼,我會將其視爲服務器機制。 –