如何设置ajax加载的延迟

时间:2013-10-09 09:42:43

标签: jquery ajax

我的代码如下: 问题是当我滚动到页面的末尾时,它会多次加载数据。如果我在页面中有10个元素,并且我从“/ api / get_more_application / 10”加载数据,但在加载完成之前,jquery在dom添加到页面之前第二次将ajax发送到“/ api / get_more_application / 10”,所以也许解决方案应该如此,你不能在最后一个请求完成之前向url发送第二个请求,怎么做? THX

$(document).ready(function(){
    var window_height = $(window).height(); 
    var i = 1; 
    $(window).scroll(function () { 
        var page_height = $(document.body).height(); 
        var scroll_top = $(window).scrollTop(); 
        var delta = page_height-window_height-scroll_top;   
        if(delta<100){ 
            random_number = Math.random();
            dom_num = $(".item").size();
            $.get("/api/get_more_application/"+dom_num+"?"+random_number,function(data,status){
                var json_data = jQuery.parseJSON(data);
                data_list_length = json_data.data_list.length;

                if (data_list_length === 0){
                    $(".nodata").show();
                }

                $.each(json_data.data_list,function(){
                    var dict_data = {
                        "admin": admin,
                        "id": this.id,
                        "limit_save_number": this.limit_save_number,
                        "employeeid": this.employeeid,
                        "appname": this.appname,
                        "filetype": this.filetype,
                        "applicant_im": this.applicant_im,
                        "onlinestor_quota": this.onlinestor_quota,
                        "employee": this.employee,
                        "apply_content": this.apply_content
                    };

                    $.get("approveditem.html",function(html_data,status){
                        replaced_str = html_data.replace(/<<(\w+?)>>/g,function($0,$1){ 
                            var value = dict_data[$1];
                            return value;
                        });
                        $("#items_container").append(replaced_str);
                    })
                });
            });
            auto_data_set();    
        };  
    });
});

1 个答案:

答案 0 :(得分:1)

尝试jQuery的睡眠功能:

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

调用该函数:

  

睡眠(1000); // 1秒