J'ai un GenServer
simple, dans lequel je souhaite créer une boucle qui appelle une fonction toutes les deux secondes:Elixir bloqué processus GenServer
defmodule MyModule do
use GenServer
def start_link(time) do
GenServer.start_link(__MODULE__,time)
end
#Start loop
def init(time) do
{:ok, myLoop(time)}
end
#Loop every two seconds
def myLoop(time) do
foo = bah(:someOtherProcess, {time})
IO.puts("The function value was: #{foo}")
:timer.sleep(2000)
myLoop(time + 2)
end
end
Mais quand je l'appelle avec:
{:ok, myServer} =MyModule.start_link(time)
IO.puts("Now I can carry on...")
Je ne voir un retour de l'appel ci-dessus. C'est un peu évident, je suppose. Donc, ma question est, comment puis-je créer la boucle que je voudrais sans bloquer le processus des tâches d'exécution en aval?
Merci.
Il existe une fonction intégrée ': timer.send_interval/2' qui fera ce dont vous avez besoin sans avoir besoin d'écrire le code vous-même. –