当我在DOM元素上添加流订阅,然后稍后删除该元素时,dart:html也会处理订阅吗?

时间:2013-11-21 11:15:53

标签: dart

通常,我创建一个我需要监听(Mouse)事件的元素。然后,稍后,我不再需要按钮了,所以我将其删除。像这样:

var button = new ButtonElement()
  ..onClick.listen((_) => print("Clicked!"));

// ... somewhere else in the code or in the callback above
button.remove();

我是否还应该处理onClick订阅(以防止内存泄漏)或是否为我处理?

1 个答案:

答案 0 :(得分:0)

我怀疑这不会通过从DOM中删除元素自动完成,因为您可能会在另一点重新插入它。 remove()的源代码非常简单:

Node remove() {
  // TODO(jmesserly): is parent == null an error?
  if (parentNode != null) {
    parentNode.nodes.remove(this);
  }
  return this;
}

但是,如果没有对该对象的其他引用,并且垃圾收集器会清理Element类,那么我希望订阅会随之而来(虽然我不知道如何从中确认来源!)。