howl.timer
setup -> set_howl_loop!
asap(f, ...)
it 'invokes <f> once as part of the next main loop iteration', (done) ->
timer.asap async ->
done!
it 'passes along any additional arguments as is', (done) ->
callback = async (...) ->
assert.same { 'one', nil, 3 }, { ... }
done!
timer.asap callback, 'one', nil, 3
after_exactly(seconds, f, ...)
it 'invokes <f> once after approximately <seconds>', (done) ->
start = get_monotonic_time!
timer.after_exactly 0.2, async ->
elapsed = (get_monotonic_time! - start) / 1000
assert.is_near 200, elapsed, 10
done!
after_approximately(seconds, f, ...)
it 'invokes <f> once after approximately <seconds>', (done) ->
settimeout 2
start = get_monotonic_time!
timer.after_approximately 1, async ->
elapsed = (get_monotonic_time! - start) / 1000
assert.is_near 1000, elapsed, 250
done!
cancel(handle)
it 'cancels an asap timer', (done) ->
invoked = false
handle = timer.asap async -> invoked = true
timer.cancel handle
timer.after 0.05, async ->
assert.is_false invoked
done!
it 'cancels an after_exactly timer', (done) ->
invoked = false
handle = timer.after_exactly 0.05, async -> invoked = true
timer.cancel handle
timer.after 0.1, async ->
assert.is_false invoked
done!
it 'cancels an after_approximately timer', (done) ->
settimeout 2
invoked = false
handle = timer.after_approximately 0.5, async -> invoked = true
timer.cancel handle
timer.after 1.0, async ->
assert.is_false invoked
done!