我有一个简单GenServer
内,我希望创建一个循环调用一个函数每两秒钟:药剂封锁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
但是,当我打电话有:
{:ok, myServer} =MyModule.start_link(time)
IO.puts("Now I can carry on...")
我从来没有看到上面的电话回复。我猜想这很明显。所以我的问题是,我怎么能创建我想要的循环,而不会阻止下游执行任务的进程?
谢谢。
有一个内置函数':timer.send_interval/2',可以完成你所需要的功能,而无需自己编写代码。 –