我试图弄清楚所有权在scala.rx中的确切运作方式。目前我有一个Scala.js Web 应用程序,它只rx.Ctx.Owner.Unsafe._
在我使用Rx
s 的任何地方导入。但是,这会导致创建许多分离的 DOM 元素,因为这个不安全的全局所有者保留了对所有Rx
s 的引用,并且永远不会让它们离开。这样,我使用scalatags和scalatags-rx创建的所有 DOM 元素将永远作为分离元素保留在我的应用程序中。
我现在想做的是为implicit val pageOwner: Ctx.Owner = Ctx.Owner.safe()
我的应用程序的每个页面创建一个,一旦离开这个页面,我想以某种方式拥有这个所有者的kill()
所有s,以便它们可以被垃圾收集。Rx
上没有kill()
定义方法Ctx.Owner
,所以我一直想知道如果所有者本身被垃圾收集,垃圾收集是否会起作用。