Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Elixir Sleep / Wait for 1 Second

How to sleep / wait for one second?

Best I could find was something like this (in iex):

IO.puts "foo" ; :timer.sleep(1); IO.puts "bar"

But both of my puts happen with no delay.

like image 785
newUserNameHere Avatar asked May 09 '16 01:05

newUserNameHere


2 Answers

Timer uses milliseconds not seconds, update to:

IO.puts "foo" ; :timer.sleep(1000); IO.puts "bar"

Documentation of :timer in Erlang's doc:

Suspends the process calling this function for Time amount of milliseconds and then returns ok, or suspend the process forever if Time is the atom infinity. Naturally, this function does not return immediately.

http://erlang.org/doc/man/timer.html#sleep-1

like image 152
Jeremie Ges Avatar answered Nov 05 '22 10:11

Jeremie Ges


Since Elixir 1.3 you can use Process.sleep/1:

Process.sleep(1000)

The argument is in milliseconds.

like image 41
Alexandre L Telles Avatar answered Nov 05 '22 10:11

Alexandre L Telles