Skip to content
Macros to use :timer.apply_after and :timer.apply_interval with a block
Elixir
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
test
.gitignore
.travis.yml
README.md
mix.exs

README.md

Build Status

BlockTimer

Macros to use :timer.apply_after and :timer.apply_interval with a block, e.g.:

    iex(1)> import BlockTimer
    nil
    iex(2)> apply_after 3 |> seconds, do: IO.puts "hello"
    {:ok, {1407446427626194, #Reference<0.0.0.371>}}
    iex(3)> hello
    iex(1)> import BlockTimer
    nil
    iex(2)> {:ok, counter} = Agent.start_link fn -> 0 end
    {:ok, #PID<0.70.0>}
    iex(3)> {:ok, tref} = apply_interval 1 |> seconds do
    ...(3)> Agent.update(counter, fn(count) -> count + 1 end)
    ...(3)> IO.puts Agent.get(counter, fn(count) -> count end)
    ...(3)> end
    {:ok, {:interval, #Reference<0.0.0.382>}}
    iex(4)> 1
    2
    3
    4
    5
    :timer.cancel tref
    {:ok, :cancel}
    iex(5)>
Something went wrong with that request. Please try again.