asyncConstruct/README.md
2020-07-31 15:44:40 +02:00

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.