4

私はエリクサーで以下を使用して単純なイベントハンドラーを持っていますGenEvent:

defmodule myHandler do
    use GenEvent
    #Callback
    def handle_event {:message, x}, state do
        IO.puts("Message value is #{x}")
        {:ok, [x|state]}
    end
end

通常の方法で 1 つのハンドラーとマネージャーを開始できます。

{:ok, mgr} = GenEvent.start_link

myServer.start_link(mgr)

GenEvent.add_handler(mgr,myHandler, [])

ただし、同じマネージャーを使用して、それぞれ異なる ID を持つ N 個のハンドラーがある監視ツリーを開始したいと考えています。

私は試した:

Gen.Event.add_handler({mgr, :id1},myHandler, [])

、運が悪い!代わりに、次のエラーが表示されます。

** (Mix) Could not start application : exited in: myApp.start(:normal, [])
** (EXIT) no connection to :id1

私は Elixir の初心者なので、ドキュメントに少し苦労しています。どなたか教えていただけるとありがたいです!ありがとう。

4

2 に答える 2

4

したがって、同じマネージャーに複数のハンドラーを追加するには、次のようなものが必要であることがわかります。

GenEvent.add_handler(:myManager, {myHandler, :id1}, [])

Elixir slack チャンネルの素晴らしい @true_droid に感謝します。

于 2015-12-18T17:13:55.210 に答える