Пытаюсь понять, как запустить genserver, и жду результата, пока он не закончит.
Как мне заставить сервер возвращать результат при выходе?
как например:
defmodule DistanceMatrix do
use GenServer
def start id do
GenServer.start(__MODULE__, id)
end
def load() do
GenServer.cast({:load})
end
def handle_cast({:load}, state) do
# start long process operation
long_process
{:noreply, state}
end
def long_process do
:timer.sleep 2000
%{result: "Process result.."}
end
end
results= ids
|> Enum.map(fn id -> DistanceMatrix.start(id) end)
|> Enum.map(&Task.await/1)
|> Enum.map(fn({:ok, result}) ->
result
end)
Итак, как мне подождать и получить результат?