This extension makes it simple to defer multiple actions after a delay from the initial execution.
Unlike hs.timer.delayed
, the delay will not be extended
with subsequent run()
calls, but the delay will trigger again if run()
is called again later.
For example:
local update = deferred.new(1) -- defer 1 second
:action(function() print("Updated!"") end)
-- do something
update()
-- do something else
update()
-- one second after the inital call to `update()`, one "Updated!" is printed.
Signature |
cp.deferred.new(delay) -> cp.deferred |
Type |
Constructor |
Description |
Creates a new defer instance, which will trigger any added action s by a set delay after |
Parameters |
- delay - The number of seconds to delay when
run() is initally called.
|
Returns |
- The new
cp.deferred instance.
|
Signature |
cp.deferred:action(actionFn) -> self |
Type |
Method |
Description |
Adds the action the the list that will be called when the timer goes off. |
Parameters |
|
| Signature | cp.deferred:delay([value]) -> self | number
|
| -----------------------------------------------------|---------------------------------------------------------------------------------------------------------|
| Type | Method |
| Description | Sets/gets the delay period. If no value
is provided, the current delay is returned. |
| Parameters |
- value - the new delay value.
|
| Returns | - The
cp.deferred
instance if a new value is provided, or the current delay if not.
|
Signature |
cp.deferred:run() -> self |
Type |
Method |
Description |
Ensures that the actions will run after the delay . |
Parameters |
|
Returns |
- The
cp.deferred instance.
|
| Signature | cp.deferred:secondsRemaining() -> number | nil
|
| -----------------------------------------------------|---------------------------------------------------------------------------------------------------------|
| Type | Method |
| Description | Returns the number of seconds until the next execution, or nil
if it's not running. |
| Parameters |
|
| Returns | - The number of seconds until execution.
|
Signature |
cp.deferred:stop() -> self |
Type |
Method |
Description |
Stops any execution of any deferred actions, if it is currently running. |
Parameters |
|
Returns |
|
Signature |
cp.deferred:waiting() -> boolean |
Type |
Method |
Description |
Checks if the defer is currently waiting to run. |
Parameters |
|
Returns |
true if the deferred action is waiting to execute.
|