mirror of
https://github.com/danog/asyncConstruct.git
synced 2024-11-26 18:54:38 +01:00
74 lines
2.5 KiB
Markdown
74 lines
2.5 KiB
Markdown
# AsyncConstruct
|
|
|
|
![Build status](https://github.com/danog/asyncConstruct/workflows/build/badge.svg)
|
|
[![codecov](https://codecov.io/gh/danog/asyncConstruct/branch/master/graph/badge.svg)](https://codecov.io/gh/danog/asyncConstruct)
|
|
![License](https://img.shields.io/badge/license-MIT-blue.svg)
|
|
|
|
`danog/asyncConstruct` provides async class constructor and wakeup functions for AMPHP.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
composer require danog/async-construct
|
|
```
|
|
|
|
## API
|
|
|
|
* Async
|
|
* [AsyncConstruct](#AsyncConstruct)
|
|
* [AsyncWakeup](#AsyncWakeup)
|
|
* Blocking
|
|
* [BlockingConstruct](#BlockingConstruct)
|
|
* [BlockingWakeup](#BlockingWakeup)
|
|
|
|
### AsyncConstruct
|
|
|
|
[Example](https://github.com/danog/asyncConstruct/blob/master/examples/async.php)
|
|
|
|
Simply `use` this trait in your class, and define a `__construct_async` async method.
|
|
The trait will automatically run the async method on construction, and expose a set of APIs to wait on the result of the constructor for initialization.
|
|
|
|
#### `init()`
|
|
|
|
Will blockingly wait for execution of the async constructor, returning its return value.
|
|
|
|
#### `initAsynchronously()`
|
|
|
|
Will return a promise that, when `yield`ed, will wait for and return the return value of the constructor.
|
|
|
|
#### `inited()`
|
|
|
|
Returns a boolean, indicating whether the class was initialized or not.
|
|
|
|
|
|
### BlockingConstruct
|
|
|
|
[Example](https://github.com/danog/asyncConstruct/blob/master/examples/blocking.php)
|
|
|
|
Exactly like [AsyncConstruct](#AsyncConstruct), except that the blocking `init()` function will be automatically called on construction.
|
|
|
|
### AsyncWakeup
|
|
|
|
[Example](https://github.com/danog/asyncConstruct/blob/master/examples/asyncWakeup.php)
|
|
|
|
Simply `use` this trait in your class, and define a `__wakeup_async` async method.
|
|
The trait will automatically run the async method on deserialization, and expose a set of APIs to wait on the result of the wakeup function for re-initialization.
|
|
|
|
#### `wakeup()`
|
|
|
|
Will blockingly wait for execution of the async wakeup function, returning its return value.
|
|
|
|
#### `wakeupAsynchronously()`
|
|
|
|
Will return a promise that, when `yield`ed, will wait for and return the return value of the wakeup function.
|
|
|
|
#### `wokenUp()`
|
|
|
|
Returns a boolean, indicating whether the class was initialized or not.
|
|
|
|
|
|
### BlockingWakeup
|
|
|
|
[Example](https://github.com/danog/asyncConstruct/blob/master/examples/blockingWakeup.php)
|
|
|
|
Exactly like [AsyncWakeup](#AsyncWakeup), except that the blocking `wakeup()` function will be automatically called on wakeup. |