hhvm / asio-utilities
此包已废弃且不再维护。未建议替代包。
简化异步函数工作的实用工具
v2.4
2015-12-10 19:57 UTC
Requires
- hhvm: ~3.11.0 | ~3.12.0
This package is not auto-updated.
Last update: 2022-01-22 03:24:15 UTC
README
在 HHVM 3.11+ 中已过时
这些函数已合并到 HHVM 中,我们预计从 3.11.0 版本开始将被包含。
安装
- 在您的 composer.json 中添加
hhvm/asio-utilities
ResultOrExceptionWrapper
在等待多个句柄时,可以隔离每个句柄的异常;ResultOrExceptionWrapper 提供了这个功能
// HH\Asio\wrap(T): Awaitable<ResultOrExceptionWrapper<T>> $w = await wrap(some_async_function_that_may_throw()); if ($w->isSucceeded()) { $result = $w->getResult(); ... } else { $exception = $w->getException(); ... }
映射和过滤函数
HHVM 3.6 及以上版本包含 HH\Asio\v() 和 HH\Asio\m(),以简化对多个等待句柄的等待;通常还需要结合其他选项,如异步函数的映射或过滤。
这些函数的命名根据其属性
首先,根据类型如何接收和返回参数
- v - Vector
- m - Map
然后,一个或两个字母表示操作
- f - filter
- fk - filter with key
- m - map
- mk - map with keys
最后,可选地跟一个 'w' 表示你想要结果或异常包装器。对于 'fw' 函数,行为如下:
- 如果过滤函数返回 true,则返回包装的元素
- 如果过滤函数返回 false,则省略元素
- 如果过滤函数抛出异常,则返回包装的异常
这也可以在没有过滤或映射操作的情况下使用 - vw() 和 mw()。
函数列表
所有函数都在 HH\Asio 命名空间中;v()
和 m()
是 HHVM 3.6 及以上版本内置的。
名称 | 返回值 | 映射 | 过滤 | 带键 | 包装 | 回调 |
---|---|---|---|---|---|---|
v() | Vector<T> | ❌ | ❌ | ❌ | ❌ | |
vm() | Vector<Tr> | ✅ | ❌ | ❌ | ❌ | (Tv): Awaitable<Tr> |
vmk() | Vector<Tr> | ✅ | ❌ | ✅ | ❌ | (Tk, Tv): Awaitable<Tr> |
vf() | Vector<Tv> | ❌ | ✅ | ❌ | ❌ | (Tv): Awaitable<bool> |
vfk() | Vector<Tv> | ❌ | ✅ | ✅ | ❌ | (Tk, Tv): Awaitable<bool> |
vw() | Vector<ResultOrExceptionWrapper<T>> | ❌ | ❌ | ❌ | ✅ | |
vmw() | Vector<ResultOrExceptionWrapper<Tr>> | ✅ | ❌ | ❌ | ✅ | (Tv): Awaitable<Tr> |
vmkw() | Vector<ResultOrExceptionWrapper<Tr>> | ✅ | ❌ | ✅ | ✅ | (Tk, Tv): Awaitable<Tr> |
vfw() | Vector<ResultOrExceptionWrapper<Tv>> | ❌ | ✅ | ❌ | ✅ | (Tv): Awaitable<bool> |
vfkw() | Vector<ResultOrExceptionWrapper<Tv>> | ❌ | ✅ | ✅ | ✅ | (Tk, Tv): Awaitable<bool> |
m() | Map<Tk, Tv> | ❌ | ❌ | ❌ | ❌ | |
mm() | Map<Tk, Tr> | ✅ | ❌ | ❌ | ❌ | (Tv): Awaitable<Tr> |
mmk() | Map<Tk, Tr> | ✅ | ❌ | ✅ | ❌ | (Tk, Tv): Awaitable<Tr> |
mf() | Map<Tk, Tv> | ❌ | ✅ | ❌ | ❌ | (Tv): Awaitable<bool> |
mfk() | Map<Tk, Tv> | ❌ | ✅ | ✅ | ❌ | (Tk, Tv): Awaitable<bool> |
mw() | Map<Tk, ResultOrExceptionWrapper<T>> | ❌ | ❌ | ❌ | ✅ | |
mmw() | Map<Tk, ResultOrExceptionWrapper<Tr>> | ✅ | ❌ | ❌ | ✅ | (Tv): Awaitable<Tr> |
mmkw() | Map<Tk, ResultOrExceptionWrapper<Tr>> | ✅ | ❌ | ✅ | ✅ | (Tk, Tv): Awaitable<Tr> |
mfw() | Map<Tk, ResultOrExceptionWrapper<Tv>> | ❌ | ✅ | ❌ | ✅ | (Tv): Awaitable<bool> |
mfkw() | Map<Tk, ResultOrExceptionWrapper<Tv>> | ❌ | ✅ | ✅ | ✅ | (Tk, Tv): Awaitable<bool> |