我正在尝试
$.ajax({
// ...,
async: false,
});
但它没有帮助。 有一种方式用旗帜(真/假),但也许有更美好的方式我该怎么办呢?
$(window).scroll(function() {
if ($(window).scrollTop() + $(window).height() > $(document).height() - 220) {
// ..
sendRequest();
// ..
}
});
此函数发出AJAX请求。
答案 0 :(得分:0)
在我们的应用程序中,我们将ajax请求添加到队列中,然后将它们弹出并逐个执行。这是一个非常简化的版本......
var queue = [];
function queueAdd( options ) {
// ADD AJAX OPTIONS TO QUEUE ARRAY
queue.push( options );
// START QUEUE RUNNING
queueRun();
}
function queueRun() {
// QUEUE EMPTY OR REQUEST ALREADY ACTIVE
if ( !queue.length || activeRequest ) return;
// REMOVE FIRST REQUEST FROM QUEUE
var request = queue.shift();
// ATTACH COMPLETE CALLBACK
request.complete = function( data ) {
// ACTIVE REQUEST COMPLETED
activeRequest = false;
// START NEXT REQUEST IN QUEUE
queueRun();
// OPTIONALLY EXECUTE ORIGINAL COMPLETE CALLBACK
request.complete( data );
};
// PREVENT CONCURRENT REQUESTS
activeRequest = true;
// EXECUTE AJAX REQUEST
$.ajax( request );
}