deferred

Last updated 6 months ago

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

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

Parameters

Returns

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

delay

Signature

`cp.deferred:delay([value]) -> self

number` </span>

Type

Method

Description

Sets/gets the delay period. If no value is provided, the current delay is returned.

Parameters

Returns

run

Signature

cp.deferred:run() -> self

Type

Method

Description

Ensures that the actions will run after the delay.

Parameters

Returns

Signature

`cp.deferred:secondsRemaining() -> number

nil` </span>

Type

Method

Description

Returns the number of seconds until the next execution, or nil if it's not running.

Parameters

Returns

stop

Signature

cp.deferred:stop() -> self

Type

Method

Description

Stops any execution of any deferred actions, if it is currently running.

Parameters

Returns

waiting

Signature

cp.deferred:waiting() -> boolean

Type

Method

Description

Checks if the defer is currently waiting to run.

Parameters

Returns