gpt4 book ai didi

javascript - ClearInterval 对于服务器 api 调用不起作用(但仅有时)

转载 作者:行者123 更新时间:2023-11-28 21:18:24 25 4
gpt4 key购买 nike

我有这个函数,应该每 4 秒查询一次数据库以获取可能已发布的任何新内容。然后,我获取返回值并使用从服务器返回的内容生成的动态 html 刷新提要。这一切都很好。

我的问题是,作为 html 的一部分,有一个选项托盘,他们可以按下该选项托盘,该选项托盘将滑过部分内容,并为他们提供处理该内容、删除、复制、评论等内容的不同选项。好吧,当他们弹出托盘时,我想清除间隔计时器,这样它就不会刷新提要中的 html(使托盘消失)。

另一个问题是用户可以同时打开多个托盘,所以我想出了这个函数来处理这一切:

function setTimers(status)
{
var timerGetContent = null;
if(status == "login")
{
tray_count = 0;
timerGetContent = null;
timerGetContent = setInterval(getContent,4000);
alert("inside login");
}
else if(status == "negitive")
{
tray_count--;
if(tray_count == 0 && timerGetContent == null)
{
timerGetContent = setInterval(getRecentContent,4000);
alert("inside negitive");
}
}
else if(status == "positive")
{
tray_count++;
clearInterval(timerGetContent);
timerGetContent = null;
alert("inside positive")
}

}

因此,当用户按下按钮弹出托盘时,它会调用 setTimer 并在执行其他操作之前将其传递给正值,然后当用户按下按钮关闭托盘时,它会调用 setTimer 并将其传递为负数。我知道这些调用有效,并且它传递了正确的参数,我什至知道它根据按下的内容进入函数的正确部分,但有时间隔没有被清除,无论发生什么,它都会持续触发我愿意。我已经为此工作了几个小时,但我完全被难住了。

编辑:我尝试将函数外部的 var timerGetContent 作为全局变量。这也有同样的行为问题。

编辑2:调用setTimers函数的函数:

function slide_out(event)
{
clicked_element = document.getElementById(event.srcElement.id);
var re_clicked = new RegExp(clicked_element.className, "g");
if(clicked_element.className == "options-bar slide-out")
{
BACKGROUND.setTimers("positive");
clicked_element.className = clicked_element.className.replace(re_clicked, '');
clicked_element.className += "options-bar slide-out open";
}
else
{
clicked_element.className = clicked_element.className.replace(re_clicked, '');
clicked_element.className += "options-bar slide-out";
BACKGROUND.setTimers("negitive");
}

另一件事是,setTimers 函数位于扩展程序的后台文件中,而该函数位于弹出窗口中。

最佳答案

尝试将 var timerGetContent = null; 移到函数外部,以便它在对 setTimers 的调用之间持续存在:现在它是函数的本地函数。

关于javascript - ClearInterval 对于服务器 api 调用不起作用(但仅有时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7015184/

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