计算下载时间并重复下载n次

时间:2013-12-02 01:49:01

标签: javascript jquery

我正在尝试从服务器下载文件,并希望计算该特定下载所需的时间并显示它。下面是用于下载的代码,但我发现难以计算时间并显示它。重要的一点是,我可能会在一次点击时多次运行代码,我的意思是,代码应该运行几次,比如说15次,我需要计算每次迭代的时间,并且应该向用户显示所有值。有人可以帮我吗?我是编程的新手,这就是为什么我可能会问非常愚蠢的疑惑,但请不要介意。

<html>

    <head>
    <script src="jQuery.js"></script>
    <script type="text/javascript">

    $.ajax({
        url: "input.txt",
        })

    .done(function(data){
        $("#textResponse").val(data);      
    })

   </script>
    </head>
    <body>
        <textarea rows="50" cols="90" id="textResponse"></textarea>
    </body>
</html>

2 个答案:

答案 0 :(得分:2)

$.ajax有一个beforeSend回调。可以使用它将开始时间附加到jqXHR对象。然后,您可以计算done回调与开始时间之间的时差:

$.ajax({
    url: '/echo/html/',
    beforeSend: function (xhr) {
        xhr.start = new Date().getTime();
    }        
}).done(function (res, status, xhr) {
    var end = new Date().getTime();
    var elapsed = end - xhr.start;
    $('body').append('<p>Elapsed =' + elapsed + ' (ms)</p>');
});

DEMO

答案 1 :(得分:1)

使用Date()。getTime()

可以解决您的问题

    <head>
    <script src="jQuery.js"></script>
    <script type="text/javascript">

    var start=new Date().getTime(); // Initializes the timer

    $.ajax({
        url: "input.txt",
        })

    .done(function(data){
        $("#textResponse").val(data);      
    })

    var end =new Date().getTime(); 
    var time=end-start; //calculates the time taken
    alert('Time taken for downloading the file: ' + time);

   </script>
    </head>
    <body>
        <textarea rows="50" cols="90" id="textResponse"></textarea>
    </body>
</html>

现在,如果你想运行一定时间,你可以设置循环,在循环中使用计时器,将时间,即时间变量存储在数组中,并在适当的时间向用户显示数组的结果根据您的要求。 参考: How to measure time taken by a function to execute