Javascript 多个jQueryAjax请求-处理它的方法
如果有jqueryajax加载,我通过快速单击按钮触发另一个ajax,它会有点卡住。如何处理一起触发的多个请求 我该怎么做Javascript 多个jQueryAjax请求-处理它的方法,javascript,jquery,ajax,Javascript,Jquery,Ajax,如果有jqueryajax加载,我通过快速单击按钮触发另一个ajax,它会有点卡住。如何处理一起触发的多个请求 我该怎么做 放弃/中止所有以前的请求,只处理最新的请求 在前一个请求完成之前不允许新请求(变体:可以是相同的ajax请求,也可以是页面中的任何新ajax请求) AJAX是异步的。所以你可以同时解雇他们 或者在成功回调(或.done()回调)中,可以一个接一个地调用请求。因此,管理您的问题将很容易(您单击按钮但被卡住),因为您可以控制 $.ajax({ url: "http://..
AJAX是异步的。所以你可以同时解雇他们 或者在成功回调(或.done()回调)中,可以一个接一个地调用请求。因此,管理您的问题将很容易(您单击按钮但被卡住),因为您可以控制
$.ajax({
url: "http://..."
})
.done(function( data ) {
// Other AJAX call
// or restore disabled elements
// while you were receiving the response.
});
如果您想解决问题,请告诉我。您可以使用ajax“beforeSend”锁定当前请求。这样,只有在前一个请求完成后,用户才能发送新请求。对于流程序列,您可以使用全局值来存储数据,并始终为其分配新的响应值
function request(callback){
if(!$btn.hasClass('disabled')){
$.ajax({
type:'...',
url:'...',
beforeSend:function(){
$btn.addClass('disabled');//so that user cannot send a new request
},
success:function(data){
window.g_data = data;
callback && callback()//success callback
$btn.removeClass('disabled');
}
})
}
}
function callback(){
//process window.g_data
}
请查看此库: Async是一个实用程序模块,它为使用异步JavaScript提供了直接、强大的功能
disable
在ajax
之前单击,在success
do itenabled
中,我不是在寻找变通方法,我想知道什么是正确的方法。这是正确的方法。你有没有研究过承诺?禁用按钮单击本身,对我来说,这更像是变通方法,(如果ajax响应从未返回,按钮将被禁用,直到页面刷新,这将破坏ajax的全部功能),我想1.放弃/中止所有以前的请求,2.在以前的请求完成之前不允许新请求(更像是检查是否有ajax请求在进行中,不要触发另一个请求)。