Luminova Framework

PHP Luminova: Deferred Promise Object

Last updated: 2025-12-30 09:51:32

Use Luminova’s Deferred, Fulfilled, and Rejected classes to simplify promise handling, manage pre-resolved states, and improve async logic clarity.

The Deferred class provides full control over a Promise object.It separates the creation of a promise from its resolution or rejection — ideal when the result of an operation isn’t immediately available, such as waiting for asynchronous tasks, I/O operations, or timed callbacks.


Class Definition

  • Class Namespace: Luminova\Promise\Deferred

constructor

Create a new Deferred instance with a pending promise state.

public __construct()

Usage

use Luminova\Promise\Deferred;

$deferred = new Deferred();

// Access the promise object
$deferred->promise()
    ->then(function ($result) {
        echo "Done: $result";
    })
    ->catch(function ($error) {
        echo "Failed: " . $error->getMessage();
    });

// Later in your code...
$deferred->resolve('Operation successful');

// or handle failure
// $deferred->reject(new Exception('Something went wrong'));

Common Use Case

Deferred promises are commonly used in custom async wrappers:

use Luminova\Components\Async;
use Luminova\Promise\Deferred;

function delayedMessage(): PromiseInterface {
    $deferred = new Deferred();
    Async::setTimeout(function () use ($deferred) {
        $deferred->resolve('Done after delay');
    }, 1000);
    return $deferred->promise();
}

delayedMessage()->then(fn($msg) => echo $msg);