Download the PHP package m3m0r7/async-promise without Composer
On this page you can find all versions of the php package m3m0r7/async-promise. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download m3m0r7/async-promise
More information about m3m0r7/async-promise
Files in m3m0r7/async-promise
Package async-promise
Short Description An async promise library written in PHP
License MIT
Informations about the package async-promise
English | 日本語
AsyncPromise
What is the AsyncPromise?
The AsyncPromise is a library for processing concurrently on PHP which implementing similarity with Javascript's Promise.
Requirements
- PHP 8.1 or higher
- Swoole (if you use SwooleDriver)
How to install
You can install as following command:
How to use
Get started
The Promise can be used in the same way JavaScript as following:
You can receive an exception to chain with catch
method.
Or you can process a rejection by the second parameter on a Promise callback function.
And the then
method can be multiple chained.
After calling then
or catch
method, you can use finally
if you want to run something.
Promise::all(array)
The result is returned as a new Promise when all of the passed Promises
are fulfilled until rejecting.
It will run until reject as following:
Promise::allSettled(array)
The result is returned as a new Promise when all of the passed Promises
are processed.
Promise::race(array)
The result is returned as a new Promise when one of the passed Promises
is processed.
Promise::any(array)
The result is returned as a new Promise when one of the passed Promises
is fulfilled.
And it is not fulfilled, it will chain to catch
method.
Promise::resolve(mixed)
It will resolve Promise
.
It will reject Promise
.
Promise::reject(string)
Drivers
You can choose to run concurrently driver. The AsyncPromise was implemented as following:
- \AsyncPromise\Driver\SwooleDriver
- \AsyncPromise\Driver\FiberDriver
- \AsyncPromise\Driver\PcntlDriver (experimental)
- \AsyncPromise\Driver\PolyfillDriver
To switch other driver:
You must run a Promise in Promise::createContext(...)
context if you use the SwooleDriver
.
You will get a benefit with concurrency when using SwooleDriver
. The below command is getting SwooleDriver performance:
The PolyfillDriver
is a virtual process driver when concurrency driver is not installed.
Therefore the PolyfillDriver
does not increase performance because which is running on synchronization. For example, to run above code; it will show Take 8 sec
.
How to test
You can run tests as following commands: