如何阻止Javascript重复该函数?
伙计们,我有一个javascript,它有一个each循环,在这个循环中,我为每个索引值调用一个特定的函数。此脚本在到达页面末尾时执行鼠标滚动事件(延迟加载) 这是脚本的主要部分:如何阻止Javascript重复该函数?,javascript,jquery,Javascript,Jquery,伙计们,我有一个javascript,它有一个each循环,在这个循环中,我为每个索引值调用一个特定的函数。此脚本在到达页面末尾时执行鼠标滚动事件(延迟加载) 这是脚本的主要部分: function (data) { $.each(data, function (index, value) { BindNotice(value); }); } 现在的问题是,在索引达到其最大值后,它将从0索引重新启动。因此,在我看来,我得到了重复的数据。我想限制此脚本仅在索引达到最大值之前
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();
}
}
});
使用全局变量阻止对此函数的其他请求 比如:
var allow = true;
function (data) {
if(allow == true){
allow = false;
$.each(data, function (index, value) {
BindNotice(value);
});
allow = true;
}
}
您可以调用另一个函数,然后在第一次执行后将其设置为不执行任何操作
function (data) {
updateData(data);
}
function updateData(data) {
updateData = function(data) {};
$.each(data, function (index, value) {
BindNotice(value);
});
}
我对代码做了一些编辑,因为它听起来更像是你得到了多个事件,而他们是在写以前的事件。在第一次调用之后,函数基本上设置为不执行任何操作。因此,第一个回调将是唯一调用BindNotice
的回调
编辑
正如我在评论中提到的,要再次通过此通道接收数据,您需要恢复updateData
。下面是一个例子:
function restoreUpdateData() {
updateData = function(data) {
updateData = function(data) {};
$.each(data, function (index, value) {
BindNotice(value);
});
};
}
尝试这样做:如果(index==data.length){return false;}循环不会再次从0开始,因此您的函数(data)会被再次调用,因为它很可能是滚动事件,它会继续执行。每个循环只执行一次,它不会自行重新启动。我们能看到触发此函数的代码吗?@sureraldream可能通过Ajax调用获得成功。以这种方式“放置”您的答案有点粗鲁。如果您还没有准备好完整的答案,请使用注释。SO使用积分并不意味着这是一场竞争。我给了我答案“使用全局变量阻止对该函数的其他请求”。不幸的是,这似乎不起作用。现在没有数据加载到scroll上。这会使用索引0中的值重复BindNotice函数。@NewbieProgrammer,是的,很抱歉我误解了你的问题。我做了一个编辑,只允许执行对这个函数的第一次调用(因为听起来好像在第一次完成之前,您收到了对函数的多次调用)。编辑后的脚本执行得非常完美。非常感谢你!非常感谢。@NewbieProgrammer,您需要注意的是,如果您想再次运行它,您需要还原
updateData
函数。还原updateData函数是什么意思?