Обратные вызовы Elixir для обещаний или asyn c await - PullRequest
0 голосов
/ 09 июля 2020
• 1000 И мне было интересно, можно ли реструктурировать код в стиле обещаний, подобном javascript, или еще лучше в стиле async / await, и как это будет выглядеть.

1 Ответ

1 голос
/ 09 июля 2020

Мне не удалось понять из вашего фрагмента, чего именно вы пытаетесь достичь, но у нас есть 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 позволяет более детально контролировать ожидание результата.

...