Dom events 如何在addEventListener中计划removeEventListener?

Dom events 如何在addEventListener中计划removeEventListener?,dom-events,purescript,Dom Events,Purescript,我试图定义一个事件侦听器,它可以触发自己的删除 通常的方法是定义侦听器,然后在调用addEventListener时使用引用。调用removeEventListener时使用相同的引用。由于Purescript是一种严格的语言,我似乎无法做到这一点,因为我无法引用我定义的侦听器 import Web.Event.EventTarget do listener <- eventListever (\event -> do somethingUsef

我试图定义一个事件侦听器,它可以触发自己的删除

通常的方法是定义侦听器,然后在调用addEventListener时使用引用。调用removeEventListener时使用相同的引用。由于Purescript是一种严格的语言,我似乎无法做到这一点,因为我无法引用我定义的侦听器

import Web.Event.EventTarget
do
  listener <- eventListever (\event -> do
                 somethingUsefulWith event
                 _ <- removeEventListener evType listener' false target
                 pure unit
                 )
  addEventListener evType listener false target 
导入Web.Event.EventTarget
做
听者做
一些与事件有关的事情

_当前的解决方案是使用
Ref

import Effect.Ref as Ref

example = do
  listenerRef <- Ref.new Nothing
  listener <- eventListener \event -> do
    Ref.read listenerRef >>= traverse_ \listener -> do
      removeEventListener evType listener false target
  Ref.write (Just listener) listenerRef
  addEventListener evType listener false target
import Effect.Ref作为Ref
示例=do
listenerRef>=遍历\侦听器->执行
removeEventListener evType侦听器错误目标
Ref.write(仅侦听器)listenerRef
addEventListener evType侦听器错误目标