5

$.ajax リクエストがあり、開始時刻と終了時刻を保存しています ( を使用new Date().getMilliseconds())。startTimeから減算しendTimeて負の数を取得するという奇妙な出来事が時々見られます。

(function(){
    var startTime = new Date().getMilliseconds();
    $.ajax({
        url:"/url.php",
        data: someObject,
        method: "POST",
        complete:function(r){
            var endTime = new Date().getMilliseconds();
            console.log(endTime - startTime); // sometimes negative?!
        }
    });
})();

誰かがこれを説明してもらえますか? 時空の連続体の裂け目以外に、論理的な説明があると確信しています。

(これを測定するためのより良い方法があれば、それもありがたいです!)

4

3 に答える 3

8

.getMillisecondsオブジェクトを作成した時間のミリ秒部分を返しDateます。したがって、比較の 50% で、その部分は他の Date オブジェクトよりも高くなるか低くなります。

必要なのは、 1970 年に Unix エポックが始まってからの絶対new Date().getTime()ミリ秒を返すです。

于 2013-10-23T23:52:39.320 に答える
5

エポック (1970 年 1 月 1 日) からのミリ秒数を取得していないため、これはしばしば負になります (約半分の時間)。これはむしろ、現在の日時のミリ秒数を取得しています。したがって、最後の 1 秒から 400 ミリ秒が経過した場合、400 が返されます...最後の 1 秒から 800 ミリ秒が経過した場合、800 が返されます。

あなたが探している関数は次のとおりです: new Date().getTime()

于 2013-10-23T23:53:27.390 に答える
3

少しのテストは言う

var date     = new Date();
var systemMS = date.getMilliseconds();
var timeMS   = date.getTime();


alert( 'Currently your clock is at ms :   '+ systemMS );
alert( '"ms" since 1 January, 1970 UTC. : '+ timeMS   );

だから試してみてください:

var start = new Date().getTime(); // note getTime()
$.ajax({
    url     :"/url.php",
    data    : someObject,
    method  : "POST",
    cache   : false,              // prevent caching response
    complete: function(){
        var end = new Date().getTime();
        console.log( end - start );
    }
});

MDNは次のように述べています。

getMilliseconds getMilliseconds によって返される値は、0 ~ 999 の数値です。

于 2013-10-23T23:53:05.093 に答える