gpt4 book ai didi

javascript - 如何阻止 Javascript 重复执行该函数?

转载 作者:行者123 更新时间:2023-12-03 12:27:09 25 4
gpt4 key购买 nike

伙计们,我有一个 JavaScript,它有一个每个循环,在其中我为每个索引值调用一个特定的函数。该脚本在到达页面末尾时在鼠标滚动事件上执行(延迟加载)。

这是脚本的主要部分:

function (data) {
$.each(data, function (index, value) {
BindNotice(value);
});
}

现在的问题是,索引达到最大值后,它会从 0 索引重新开始。所以我认为我得到了重复的数据。我想限制此脚本仅在索引达到最大值之前执行。我该如何去做呢?

编辑:添加完整功能

function callMoreData()
{
$.ajax(
{
type: "GET",
url: "/api/values/getnotice",
dataType: "json",
crossDomain: true,
async: true,
cache: false,
allow: true,
success: function (data) {
$.each(data, function (index, value) {
BindNotice(value);
});
},
error: function (x, e) {
alert('problem while fetching records!');
}
} );}

来自 JS 文件:

$(".mainwrap .innnerwrap").mCustomScrollbar({
autoDraggerLength:true,
autoHideScrollbar:true,
scrollInertia:100,
advanced:{
updateOnBrowserResize: true,
updateOnContentResize: true,
autoScrollOnFocus: false
},
callbacks:{
whileScrolling:function(){WhileScrolling();},
onTotalScroll: function () {
callMoreData();
}

}
});

最佳答案

您可以调用另一个函数,然后将其设置为在第一次执行后不执行任何操作。

function (data) {
updateData(data);
}
function updateData(data) {
updateData = function(data) {};
$.each(data, function (index, value) {
BindNotice(value);
});
}

Demo using alerts.

我对代码进行了一些编辑,因为听起来更像是您收到了多个事件,并且它们正在覆盖以前的事件。第一次调用后,该函数基本上被设置为不执行任何操作。因此,第一个回调将是唯一调用 BindNotice 的回调。

编辑

正如我在评论中提到的,要通过此 channel 再次接收数据,您需要恢复 updateData。这是一个例子:

function restoreUpdateData() {
updateData = function(data) {
updateData = function(data) {};
$.each(data, function (index, value) {
BindNotice(value);
});
};
}

关于javascript - 如何阻止 Javascript 重复执行该函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24142431/

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