范围
我们有一个功能。在它内部是一个ajax请求:
function search(){
$.ajax({
url: "url",
dataType: "text",
success: function(result) {
var filter = $(result).find('#myDiv');
// populate a hidden div with this information
$("#ladderInformation").html(filter);
}
});
}
一旦完成,我们迭代初始ajax请求的结果,并为每个请求运行一个新的ajax请求:
// yes, this is attached to the above, it's not outside of the first ajax call
.done(function(){
// for every team, we're going to run this ajax call
$('.team').each(function(i){
$.ajax({
url: "(we make use of $(this).text() here)",
dataType: "text",
success: function(teamdata){
$('#teamListing').append($(teamdata).find('#team-sheet'));
// for every time it runs, we'll append a div to the wrapper.
$('.wrapper').append('<div class="teamInfo" id="'+ Team [i] + '"></div>');
}
});
});
});
这一切都很完美。
接下来,我操纵收到的元素:
$(document).ajaxStop(function(){
//this function is irrelevant to the issue
configureTeams();
});
以上所有内容都包含在第一个提及的函数search();
中。我们称之为
$(document).ready(function(){
search();
$('select').on('change', function(){
search();
});
});
在第一页加载时,它按预期执行所有操作。
问题
当多次触发select侦听器时,每次使用它时,应用程序都会大幅减慢速度。当我尝试添加&#34;自动刷新&#34;结果(通过将setTimeout(function(){ search() }, 5000);
添加到$(document).ajaxStop(){}
函数的末尾来实现)。
每次调用search()
时,都会触发一次额外的时间。因此,举例来说,如果你已经改变选择6次(或者让应用程序继续运行并自动刷新6次),则会激活6次以匹配此项,并且不可避免地会中断。
尝试修复
如果我在console.log()
函数中$(document).ajaxStop()
,则会在每次调用search()
时触发额外的时间。这可以通过将其更改为$(document).one('ajaxStop', function(){})
来解决,但这并不能解决整个问题,因为所有这一切都会阻止配置多次触发。
我得到了在search()
开头清空信息的div,所以没有与相同数据或类似的数据发生冲突,我尝试在队列中管理ajax请求,我有尝试了多种检测所有ajax请求在继续之前完成的方法,我尝试限制$.each()
函数,因此它不会超过所需的迭代次数,但无济于事。
TL; DR
我想要完成的是,当我多次运行一个函数时,我们每次都完全重新开始。似乎它每次被调用时都会记录。是否有清除内存,AJAX队列或类似的解决方案?
如果更有帮助,我可以提供完整的代码。
由于