gpt4 book ai didi

javascript - 是否可以停止当前正在执行的 Javascript 代码?

转载 作者:行者123 更新时间:2023-11-29 18:27:45 25 4
gpt4 key购买 nike

我不确定我要问的问题是否可行或处理事情的正确方法,但这里是。

我有一个网页,它使用 AJAX 从服务器加载一些数据并以可视化方式显示。用户可以选择使用页面上的两个按钮之一“滚动”按周过滤的数据。这些按钮的代码类似于:

$("#leftButton").click(function () {
clearCurrentlyDisplayedData();
changeFilter(1); //Or -1, or whatever.
loadAndDisplayData();
}

在此(简化的)示例中,loadAndDisplayData() 将使用 AJAX 调用来获取此数据,然后在请求完成时显示它,例如:

$.get(
"web/service/address",
function (data, textStatus, jqXHR) {
//Display the data here
});

但是,当用户单击箭头以过快地滚动数据时会出现问题。如果快速连续点击按钮两次,将显示两周的数据,一个接一个地显示。

不想在收集数据之前禁用按钮 - 因为数据收集和显示确实需要一点时间,这会破坏用户导航的能力该网站很快就会变得令人讨厌。

当用户单击其中一个按钮以防止加载两组数据时,是否可以终止任何当前正在执行的脚本或 AJAX 调用(或由此调用的函数)?有没有其他方法可以解决这个问题?

最佳答案

jqXHR object has an abort() method ,您可以调用它来取消 AJAX 请求。

但是,这需要您保留对 $.get() 返回的对象的引用。

一个可能更简单的方法是在发出请求时增加一个全局计数器,并在请求完成时减少它。在您的 success 处理程序中,仅在计数器 === 0 时显示结果(例如,没有待处理的请求)。

关于javascript - 是否可以停止当前正在执行的 Javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11396493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com