# 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

  • new

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

  • action
  • delay
  • run
  • secondsRemaining
  • stop
  • waiting

# API Documentation

# Constructors

# new

Signature cp.deferred.new(delay) -> cp.deferred
Type Constructor
Description Creates 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.
Notes None
Examples None
Source src/extensions/cp/deferred/init.lua line 33

# Methods

# action

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
  • 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.
Examples None
Source src/extensions/cp/deferred/init.lua line 57

# delay

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.
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.
Examples None
Source src/extensions/cp/deferred/init.lua line 139

# run

Signature cp.deferred:run() -> self
Type Method
Description Ensures 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.
Notes None
Examples None
Source src/extensions/cp/deferred/init.lua line 83

# secondsRemaining

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
  • None
Returns
  • The number of seconds until execution.
Notes None
Examples None
Source src/extensions/cp/deferred/init.lua line 112

# stop

Signature cp.deferred:stop() -> self
Type Method
Description Stops any execution of any deferred actions, if it is currently running.
Parameters
  • None
Returns
  • The deferred timer.
Notes None
Examples None
Source src/extensions/cp/deferred/init.lua line 125

# waiting

Signature cp.deferred:waiting() -> boolean
Type Method
Description Checks if the defer is currently waiting to run.
Parameters
  • None
Returns
  • true if the deferred action is waiting to execute.
Notes None
Examples None
Source src/extensions/cp/deferred/init.lua line 99