跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 怎样限制一个 javascript 函数的被调用频率?
未分類
2020 年 5 月 16 日

怎样限制一个 javascript 函数的被调用频率?

怎样限制一个 javascript 函数的被调用频率?

資深大佬 : lisisi 8

有一个函数 send_log() 负责向后端发送前端日志,由于这个 send_log() 会被其他不同的函数调用,这个调用行为又想限制在一定的频率范围之内(避免频繁请求后端服务器,造成无谓的压力)。

有什么方式,可以限制这个 send_log() 被调用的频率吗(比如每分钟最多 1 次这样)。

function send_log() {     // send data to server } 

大佬有話說 (16)

  • 資深大佬 : murmur

    搜索 throttle

  • 資深大佬 : murmur

    其实这个最好是建议 debounce,把日志收起来,日志可以考虑编个码 gz 一下啥的,随便扔日志是个好做法么,或者给日志分 debug info error 这样的级别

  • 資深大佬 : lithbitren

    初始一个 bool 变量为 true,只有变量为 true 才能调用目标函数,每次调用完函数后,bool 变量变成 false,执行 settimeout 让其变成 true 。

  • 資深大佬 : Orenoid

    装饰器+闭包应该就能实现吧

  • 資深大佬 : xg4

    throttle 或者 debounce 会丢失一部分日志
    可以先把日志放在本地,每分钟发送一次数据,发送成功之后清空数据

  • 資深大佬 : wunonglin

    @xg4 #5 正解

  • 資深大佬 : hanxiaomeng

    sleep(60)

  • 資深大佬 : JackWolf001

    节流吧

  • 資深大佬 : foam

    业务层区分日志重要程度,不希望丢的实时发,可以丢的累积发。

  • 資深大佬 : zhennann

    如果是考虑分布式,可用 bottleneck

  • 資深大佬 : cst4you

    log 可以先存起来, 然后到了次数一次发送

  • 資深大佬 : christin

    if ( flag>n) break;
    flag++

  • 資深大佬 : tairan2006

    5 正解…或者别限制了,后端塞 kafka 里

  • 資深大佬 : windychen0

    let flag = true;
    function send_log() {
    if(flag ){
    flag = false;
    // send data to server
    // function callback(){setTimeout(()=>{flag = true},1000 * 60)}
    }else{
    return false
    }
    }

  • 資深大佬 : zjm947373

    rxjs 欢迎你 怎样限制一个 javascript 函数的被调用频率?

  • 資深大佬 : theohateonion

    function send_log() {

    return throttle(old_send_log, 6000)

    }

    不考虑丢 log 的话就这样就行了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具