jquery之如果有新请求进来,如何取消进行中的请求
Free-Thinker
阅读:62
2025-06-02 22:19:02
评论:0
我正在使用 Go 创建一个 API 并提供一个带有侧边栏链接的单页网站,单击这些链接时,会更新屏幕中心的主要内容区域。流程是:
只要用户等待内容加载(以毫秒为单位)就可以正常工作,但将来可能会有更长时间的请求。如果用户能够非常快速地单击将加载不同内容的多个链接,以便多个 ajax 请求正在进行中,那么生成的内容不是确定性的,因为 jquery 正在清除和附加来自多个请求的标记。您会从两个请求的结果中看到混合内容。
我只想处理最新的请求。如果用户单击链接一,然后在请求一仍在进行中时单击链接二,则应取消请求一,只处理请求二。
我认为这应该在服务器上处理,但不知道如何开始。以下是正确的方法吗?
建立一个请求 channel 来对带有上下文的传入请求进行排队。排队后,检查 channel 的长度,如果它有多个请求,则在 channel 上进行范围并调用每个请求的上下文取消函数,除了最后一个排队的请求。
此外,处理程序现在是全局的,所以我认为还需要与客户端协商 ID 或让客户端生成 ID,以便服务器知道要取消哪些客户端请求。
请您参考如下方法:
根据评论,这将在客户端处理,例如:
var currentRequest = null;
currentRequest = jQuery.ajax({
type: 'POST',
data: 'value=' + text,
url: 'AJAX_URL',
beforeSend : function() {
if(currentRequest != null) {
currentRequest.abort();
}
},
success: function(data) {
// Success
},
error:function(e){
// Error
}
});
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



