从给定端口注销多个订阅者

Unregister multiple subscribers from a given port

要从端口注销监听器,您可以这样做:

app.port.unsubscribe(myListener)

有没有一种方法可以取消注册给定端口的所有侦听器,而无需为每个侦听器显式调用取消订阅?我想确保我不会忘记任何听众。 我尝试不带任何参数调用unsubscribe(),但似乎没有任何效果。

这目前是不可能的。您可以在此处查看端口的公开 API:

https://github.com/elm/core/blob/de38986116bd93affc1c7a12e548d1f01be9a9f1/src/Elm/Kernel/Platform.js#L343-L365

subs 数组未公开,因此默认情况下,没有原始回调就无法获取它。

如果此功能对您很重要,您可能会考虑在 Javascript 端编写一个包装器来跟踪您订阅的回调,您可以使用它来实现 unsubscribeAll 自己.