收藏
回答

小程序底层一直在递归调用setTimeout?

把下面的代码粘贴到控制台,回车即可看到一直在打印东西。开始我以为是我们项目哪里有用到这个,但检查发现并没有,然后我新建了一个代码片段,在控制台粘贴了下面的代码,发现 setTimeout 一直被递归调用。这是小程序底层bug吗?还是有特殊用途?

    window.setTimeout = new Proxy(window.setTimeout, {
      apply: (...args) => {
        const timerId = Reflect.apply(...args)
        console.log('setTimeout', timerId, args[2][1])
        return timerId
      }
    })
回答关注问题邀请回答
收藏

1 个回答

  • 微信小店技术专员-binnie
    微信小店技术专员-binnie
    2021-05-07

    这个是正常的哦,设置proxy之后,有setTimeout就会被捕获到。这里打印的是基础库调用的setTimeout。这里是有什么场景会用到proxy呢?

    2021-05-07
    有用 1
    回复 1
    • Thomas Trainset 🤪
      Thomas Trainset 🤪
      2021-05-11
      我们的小程序使用久了,会越来越卡顿,且发烫。我对 setTomeout 和 setInterval 设置 proxy ,来排查项目中是否有未回收的定时器。
      2021-05-11
      回复
登录 后发表内容
问题标签