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

如何缓存已有update_scores函数并仅在click触发后执行新增逻辑

修正后的实现代码

// 初始化增强版update_scores
update_scores = (function() {
    // 缓存原始未修改的update_scores函数
    const cachedOriginal = update_scores;
    // 逻辑开关,初始状态为关闭,页面加载阶段不会触发附加逻辑
    let enableExtraLogic = false;

    return function(...args) {
        // 先执行原函数的所有原有逻辑,保证原有功能不受影响
        const returnVal = cachedOriginal.apply(this, args);

        // 仅在开关打开时执行附加逻辑
        if (enableExtraLogic) {
            // 此处填写你需要附加的额外逻辑
        }

        // 仅当调用时传入的第一个参数为true时,永久打开开关
        if (args[0] === true) {
            enableExtraLogic = true;
        }

        return returnVal;
    };
})();

// 点击事件触发函数
function click() {
    // 传入true触发开关打开
    update_scores(true);
}

实现逻辑说明

  • 初始状态下开关为关闭,页面加载阶段无论update_scores被调用多少次,都不会执行附加逻辑,完全符合页面加载时不能触发附加逻辑的要求
  • 只有click()函数被主动调用后,才会将开关永久设置为开启状态,不会存在其他场景提前开启开关的可能
  • 开关开启后,后续所有update_scores的调用都会在执行完原有逻辑后,自动执行你定义的附加逻辑
  • 完全保留原update_scores的所有功能、传参规则、返回值,不会影响原有业务逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:06:03