world valim tutorial programación lenguaje josé hello framework erlang elixir

erlang - valim - Espere a Node.connect antes de usar: global.whereis_name



josé valim (1)

Tengo la siguiente función:

def join(id) do if Node.connect(:"#{id}@127.0.0.1") do send :global.whereis_name(id), {:join, id} end end

Recibo el error:

(ArgumentError) argument error :erlang.send(:undefined, ...

lo cual supongo es porque Node.connect hace una recopilación de información y cuando llamo :global.whereis_name aún no ha terminado. Si lanzo un :timer.sleep(1000) no recibo un error. ¿Hay una solución más elegante? Me gustaría repetir :global.whereis_name hasta que :global.whereis_name éxito o se alcance un tiempo de espera.

EDITAR:

Debo mencionar que ya tengo un nodo registrado con el nombre id .


Podría hacer a :global.sync() before :global.whereis_name(id)