Мне не удалось понять из вашего фрагмента, чего именно вы пытаетесь достичь, но у нас есть Task.async/1 и Task.await/2.
Task.async/1
Task.await/2
Что-то вроде этого должно делать:
def outer_fn(param) do t = Task.async(fn -> very_long_sync_function(param, fn (result) -> {:ok, short_fn(objective_ids)} end) end) doing_stuff() Task.await(t) end
Task.yield/2 позволяет более детально контролировать ожидание результата.
Task.yield/2