You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何控制低网速触发的弹窗函数仅首次及间隔1分钟后调用?

解决重复弹窗的低网速提示方案

这个问题我之前也碰到过,核心是要跟踪低网速的状态和上次弹窗的时间,避免无意义的重复触发。给你一套可行的实现方案:

第一步:定义状态跟踪变量

先在代码的全局作用域(或者封装在闭包里避免污染全局)定义几个关键变量,用来控制弹窗逻辑:

// 标记是否已经进入低网速告警状态
let isLowSpeedAlertActive = false;
// 记录上次弹窗的时间戳
let lastPopupTimestamp = 0;
// 弹窗间隔阈值(毫秒,这里设置为1分钟)
const POPUP_INTERVAL = 60 * 1000;

第二步:修改测速判断逻辑

把你原来的测速判断逻辑替换成下面的代码,加入状态检查和时间判断:

if (speedMbps < low) {
    const now = Date.now();
    if (!isLowSpeedAlertActive) {
        // 首次检测到低网速,立即触发弹窗
        popup_speedtest();
        isLowSpeedAlertActive = true;
        lastPopupTimestamp = now;
    } else {
        // 已经处于低网速状态,检查是否超过1分钟间隔
        if (now - lastPopupTimestamp >= POPUP_INTERVAL) {
            popup_speedtest();
            lastPopupTimestamp = now;
        }
    }
} else {
    // 网速恢复正常,重置告警状态
    isLowSpeedAlertActive = false;
}

第三步:保留原弹窗函数

你的弹窗函数可以继续使用原来的实现,不需要做任何修改:

function popup_speedtest() { 
    $("#alert_speedtest").modal('toggle'); 
}

逻辑说明

  • 首次触发:当第一次检测到低网速时,isLowSpeedAlertActive为false,会立即弹出提示,同时标记告警状态为活跃并记录当前时间。
  • 持续低网速:后续每10秒的测速中,只有距离上次弹窗满1分钟时,才会再次触发弹窗,避免频繁打扰用户。
  • 网速恢复:当测速结果回到阈值以上时,会重置告警状态,这样下次再出现低网速时,会重新触发首次弹窗逻辑。

这个方案既保证了告警的及时性,又解决了重复弹窗的问题,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Silvia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 07:37:29