防止函数被调用

时间:2021-02-09 12:58:01

标签: javascript popup settimeout

所以我有一个测量连接速度的功能,我每 10 秒运行一次(无需点击任何地方)。 在速度较低的一种情况下,如果为真,它会调用其他函数来打开带有消息的弹出窗口。 我的问题是,speed 函数每 10 秒调用一次,所以每 10 秒(如果速度持续低)它调用弹出窗口,我不想要那样。

我想在第一次速度低时调用弹出窗口,如果速度仍然很低,则仅在 1 分钟后再次调用。

我的代码是这样的:

 if (speedMbps < low) {
                
                //call the function to open pop-up
                popup_speedtest();
            }

...

function popup_speedtest() {
//make the pop-up opens in vbhtml
$("#alert_speedtest").modal('toggle');
}

我想过这样做

setTimeout(function() {
//make the pop-up opens in vbhtml
$("#alert_speedtest").modal('toggle');
}, 60000);

但这不会让弹出窗口第一次打开,而且每次函数运行时都会重置 setTimeout。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您想跟踪显示模态的状态。为类似的东西添加一个变量:

let shownModal = false;

然后,当您显示模态时,检查和/或更新变量并设置 1 分钟计时器以重置变量。像这样:

if (speedMbps < low) {
    if (!shownModal) {
        shownModal = true;
        popup_speedtest();
        setTimeout(function() {
            shownModal = false;
        }, 60000);
    }
}

这样它只在状态当前为 false 时才执行逻辑,逻辑是将状态设置为 true,显示模态,并设置超时以将状态返回到 {{ 1}}。

相关问题