#cp.deferred

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.

#API Overview

Constructors - API calls which return an object, typically one that offers API methods

Methods - API calls which can only be made on an object returned by a constructor


#API Documentation

#Constructors

Signaturecp.deferred.new(delay) -> cp.deferred
TypeConstructor
DescriptionCreates a new defer instance, which will trigger any added actions by a set delay after the initial call to run().
Parameters
  • delay - The number of seconds to delay when run() is initally called.
Returns
  • The new cp.deferred instance.
NotesNone
ExamplesNone
Sourcesrc/extensions/cp/deferred/init.lua line 33

#Methods

Signaturecp.deferred:action(actionFn) -> self
TypeMethod
DescriptionAdds the action the the list that will be called when the timer goes off.
Parameters
  • The callable action.
Returns
  • Self
Notes
  • It must be a function (or callable table) with the following signature:
  • lua</li><li>function() -> nil</li><li>
  • * Multiple actions can be added and they will all be called when the delay timer goes off.
ExamplesNone
Sourcesrc/extensions/cp/deferred/init.lua line 57

Signaturecp.deferred:delay([value]) -> self | number
TypeMethod
DescriptionSets/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.
Notes
  • If it is provided, then the new delay will be set. If it is currently waiting, then the wait will be restarted with the new delay.
ExamplesNone
Sourcesrc/extensions/cp/deferred/init.lua line 139

Signaturecp.deferred:run() -> self
TypeMethod
DescriptionEnsures that the actions will run after the delay. Multiple calls will not increase the delay from the initial call.
Parameters
  • None
Returns
  • The cp.deferred instance.
NotesNone
ExamplesNone
Sourcesrc/extensions/cp/deferred/init.lua line 83

Signaturecp.deferred:secondsRemaining() -> number | nil
TypeMethod
DescriptionReturns the number of seconds until the next execution, or nil if it's not running.
Parameters
  • None
Returns
  • The number of seconds until execution.
NotesNone
ExamplesNone
Sourcesrc/extensions/cp/deferred/init.lua line 112

Signaturecp.deferred:stop() -> self
TypeMethod
DescriptionStops any execution of any deferred actions, if it is currently running.
Parameters
  • None
Returns
  • The deferred timer.
NotesNone
ExamplesNone
Sourcesrc/extensions/cp/deferred/init.lua line 125

Signaturecp.deferred:waiting() -> boolean
TypeMethod
DescriptionChecks if the defer is currently waiting to run.
Parameters
  • None
Returns
  • true if the deferred action is waiting to execute.
NotesNone
ExamplesNone
Sourcesrc/extensions/cp/deferred/init.lua line 99