Code Monkey home page Code Monkey logo

Comments (3)

shunia avatar shunia commented on June 3, 2024

果然是个老问题:#587
真巧咱俩最近都遇到了,我翻了一下源代码,应该是因为log.model里面的限流逻辑window.requestAnimationFrame的回调方法_flushLogs里面的代码导致的。

我的log是一个interval性质的,调用destroy之后,log.modelunbind方法没有正确的屏蔽掉限流逻辑,但是又把Store里的东西删了,导致限流回调触发后可能会去获取Store里面的内容,但是获取的代码没做空保护,从而触发报错了。

这个改动的方法很多,比如在unbind的时候清空logQueue,比如增加一个flag来阻止限流回调的运行同时阻止addLog的执行,比如在限流回调中获取store的时候加一个空保护。

做一个空保护是最简单的,但是从代码设计的角度来说也许不是最优的。

from vconsole.

shunia avatar shunia commented on June 3, 2024

果然是个老问题:#587 真巧咱俩最近都遇到了,我翻了一下源代码,应该是因为log.model里面的限流逻辑window.requestAnimationFrame的回调方法_flushLogs里面的代码导致的。

我的log是一个interval性质的,调用destroy之后,log.modelunbind方法没有正确的屏蔽掉限流逻辑,但是又把Store里的东西删了,导致限流回调触发后可能会去获取Store里面的内容,但是获取的代码没做空保护,从而触发报错了。

这个改动的方法很多,比如在unbind的时候清空logQueue,比如增加一个flag来阻止限流回调的运行同时阻止addLog的执行,比如在限流回调中获取store的时候加一个空保护。

做一个空保护是最简单的,但是从代码设计的角度来说也许不是最优的。

更正一下触发的原因,并不是因为interval性质的log导致的,而是在destroy之前打一条log就可以必现这个报错

from vconsole.

suzhenghui-sky avatar suzhenghui-sky commented on June 3, 2024

果然是个老问题:#587 真巧咱俩最近都遇到了,我翻了一下源代码,应该是因为log.model里面的限流逻辑window.requestAnimationFrame的回调方法_flushLogs里面的代码导致的。
我的log是一个interval性质的,调用destroy之后,log.modelunbind方法没有正确的屏蔽掉限流逻辑,但是又把Store里的东西删了,导致限流回调触发后可能会去获取Store里面的内容,但是获取的代码没做空保护,从而触发报错了。
这个改动的方法很多,比如在unbind的时候清空logQueue,比如增加一个flag来阻止限流回调的运行同时阻止addLog的执行,比如在限流回调中获取store的时候加一个空保护。
做一个空保护是最简单的,但是从代码设计的角度来说也许不是最优的。

更正一下触发的原因,并不是因为interval性质的log导致的,而是在destroy之前打一条log就可以必现这个报错

是的,我把关闭之前的log关了就不报错了。感谢

from vconsole.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.