Dojo的明显事件侦听器泄漏

时间:2018-08-07 21:34:58

标签: javascript memory-leaks dojo

如果我使用Dojo创建事件侦听器并调用.remove(),则不会看到侦听器的数量下降(如Chrome DevTools“性能”标签所报告的那样)。

示例代码:(您可以将其粘贴到Dojo website上的JavaScript控制台中进行尝试!)

dojo_on = require("dojo/on");

function makeHandlers(n) {
    var handlers = [];
    for (var i = 0; i < n; i++) {
        handlers.push(dojo_on(document.body, 'click', () => console.log('boo')));
    }
    return handlers;
}

function removeAll(handlers) {
    handlers.forEach(x => x.remove());
}

运行handlers = makeHandlers(1000),我可以观察到处理程序数量增加。调用removeAll(handlers),我可以看到(通过单击文档)事件处理程序不再触发,但是侦听器的数量没有减少,如以下屏幕快照所示:

enter image description here

我做错什么了吗?我是通过这些监听器泄漏内存吗?

0 个答案:

没有答案