PHPackages                             carno-php/promise - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. carno-php/promise

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

carno-php/promise
=================

1.0.1(6y ago)11.1k120MITPHPPHP ^7.1

Since Aug 28Pushed 6y ago1 watchersCompare

[ Source](https://github.com/carno-php/promise)[ Packagist](https://packagist.org/packages/carno-php/promise)[ RSS](/packages/carno-php-promise/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (3)Used By (20)

Promise - component of carno-php
================================

[](#promise---component-of-carno-php)

Features
========

[](#features)

- [Promises/A+](https://promisesaplus.com/) standards
- Addition commands e.g. race, all
- Simple and fast

Installation
============

[](#installation)

```
composer require carno-php/promise
```

API &amp; Usages
================

[](#api--usages)

#### new Promise

[](#new-promise)

Creates a promise with initialize executor

```
$promise = new Promise(static function (Promised $promise) {
    if (1) {
        $promise->resolve('success');
    } else {
        $promise->reject('error');
    }
});
$promise->then(function () {
    echo 'promise has been resolved', PHP_EOL;
}, function () {
    echo 'promise has been rejected', PHP_EOL;
});
```

#### Promise::deferred

[](#promisedeferred)

Creates a defer resolve promise

```
$promise = Promise::deferred();
$promise->then(function (string $var) {
    echo $var, PHP_EOL;
});
$promise->resolve('var');
```

#### Promise::resolved

[](#promiseresolved)

Creates a resolved promise

```
$promise = Promise::resolved('var');
$promise->then(function (string $var) {
    echo $var, PHP_EOL;
});
```

#### Promise::rejected

[](#promiserejected)

Creates a rejected promise

```
$promise = Promise::rejected(new Exception('Test'));
$promise->catch(function (Throwable $e) {
    echo 'failure with ', $e->getMessage(), PHP_EOL;
});
```

#### Promise::all

[](#promiseall)

> Returns a single promise that resolves when all of the promises in the argument have resolved or when the argument contains no promises. It rejects with the reason of the first promise that rejects.

```
$p1 = Promise::deferred();
$p2 = Promise::deferred();
$pa = Promise::all($p1, $p2);
$pa->then(function (array $results) {
    echo 'all resovled with results ', var_export($results, true), PHP_EOL;
});
$p1->resolve('var1');
$p2->resolve('var2');
```

#### Promise::race

[](#promiserace)

> Returns a promise that resolves or rejects as soon as one of the promises in the argument resolves or rejects, with the value or reason from that promise.

```
$p1 = Promise::deferred();
$p1->then(function () {
    echo 'p1 has been resolved', PHP_EOL;
}, function () {
    echo 'p1 has been rejected', PHP_EOL;
});
$p2 = Promise::deferred();
$p2->then(function () {
    echo 'p2 has been resolved', PHP_EOL;
}, function () {
    echo 'p2 has been rejected', PHP_EOL;
});
$pr = Promise::race($p1, $p2);
$pr->then(function (string $var) {
    echo 'race result is ', $var, PHP_EOL;
});
$p1->resolve('test');
// or $p2->reject();
```

#### Promise-&gt;pended

[](#promise-pended)

Check that promise is neither fulfilled and rejected

```
$promise = Promise::deferred();
echo '#1 promise is pended ? ', $promise->pended() ? 'yes' : 'no', PHP_EOL;
$promise->resolve();
echo '#2 promise is pended ? ', $promise->pended() ? 'yes' : 'no', PHP_EOL;
```

#### Promise-&gt;chained

[](#promise-chained)

Check that promise has more chained promises (connected with `then`)

```
$promise = Promise::deferred();
echo '#1 promise is chained ? ', $promise->chained() ? 'yes' : 'no', PHP_EOL;
$promise->then(function () {
});
echo '#2 promise is chained ? ', $promise->chained() ? 'yes' : 'no', PHP_EOL;
```

#### Promise-&gt;sync

[](#promise-sync)

Make promise synced with other promise (resolves and rejects)

```
$next = Promise::deferred();
$next->then(function (string $var) {
    echo 'NEXT promise been resolved with ', $var, PHP_EOL;
}, function (string $var) {
    echo 'NEXT promise been rejected with ', $var, PHP_EOL;
});
$promise = Promise::deferred()->sync($next);
$promise->then(function (string $var) {
    echo 'CURRENT promise been resolved with ', $var, PHP_EOL;
}, function (string $var) {
    echo 'CURRENT promise been rejected with ', $var, PHP_EOL;
});
$promise->resolve('hello');
// or $promise->reject('world');
```

#### Promise-&gt;fusion

[](#promise-fusion)

Set promise to throws exception if rejected with an error, otherwise exception will only as promise's result

```
Promise::deferred()->fusion()->throw(new Exception('test'));
```

#### Promise-&gt;then

[](#promise-then)

```
$promise = Promise::deferred();
$promise->then(function (...$args) {
    echo 'promise resolved with args ', var_export($args, true), PHP_EOL;
}, function (...$args) {
    echo 'promise rejected with args ', var_export($args, true), PHP_EOL;
});
$promise->resolve('hello', 'world');
// or $promise->reject('hello', 'world');
```

#### Promise-&gt;catch

[](#promise-catch)

Alias of Promise-&gt;then(null, onRejects)

#### Promise-&gt;resolve

[](#promise-resolve)

Resolves a promise

```
Promise::deferred()->resolve('var1', 'var2');
```

#### Promise-&gt;reject

[](#promise-reject)

Rejects a promise

```
Promise::deferred()->reject('var1', 'var2');
```

#### Promise-&gt;throw

[](#promise-throw)

Alias of Promise-&gt;reject(exception)

Benchmark
=========

[](#benchmark)

```
php benchmark.php
```

output

```
cost 362 ms | op 1.105 μs

```

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~331 days

Total

2

Last Release

2485d ago

PHP version history (2 changes)1.0.0PHP ^7.2

1.0.1PHP ^7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/ee5620a146ee71289cb4ad63d06cdfcbfd679eb02b446f78bd772df8342b43a0?d=identicon)[moyo](/maintainers/moyo)

---

Top Contributors

[![moolex](https://avatars.githubusercontent.com/u/1132321?v=4)](https://github.com/moolex "moolex (9 commits)")

### Embed Badge

![Health badge](/badges/carno-php-promise/health.svg)

```
[![Health](https://phpackages.com/badges/carno-php-promise/health.svg)](https://phpackages.com/packages/carno-php-promise)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
