【发布时间】:2014-05-01 21:10:59
【问题描述】:
假设我有很多元素,每个元素都有自己的监听器,如下所示:
DivElement _container = querySelector("#container");
void _createButtons(int count) {
for (int i = 0; i < count; i++) {
var button = new ButtonElement()
..text = "Button #$i";
button.onClick.listen((_) => print("Clicked #$i."));
_container.append(button);
}
}
然后在某个时候我清除了 DOM,如下所示:
_container.clear();
我应该担心“孤立”事件侦听器吗?
这似乎在纯 JavaScript 中并不清楚(例如,参见 Does remove a DOM object (in Javascript) will cause Memory leak if it has event attached?)。查看 Chrome DevTools 时间线,似乎周围有听众,但我不确定这是否与我所问的有关。
当然,我可以保留StreamSubscription 并“确定”取消它,但如果不是绝对必要,我不想这样做。它使代码复杂。
【问题讨论】:
标签: dart