
124
|
第
6
章
await
HH\Asio\v(
array
(fetch_from_web(), fetch_from_db(1234)));
return
$web . $db;
}
我们将在本章的余下篇幅里面对这里所发生的事情详细阐述,但是现在你对异步代码有
较高层次的认识即可。
6.2
异步细节
在我们正式开始之前,如果你将要频繁使用异步,我们极力推荐你安装
asio-utilities
,这
是一个异步的助手函数库。我们将在接下来的学习中对这个库的内容进行探讨。当然,
没有这个库,你也可以使用异步,但是它可以使得代码更加简洁。
下载和安装这个类库的推荐途径是使用
Composer
(
https://getcomposer.org/
),这是一
个对
PHP
和
Hack
进行包管理的工具。在你的
composer.json
文件中添加如下内容即可:
"require": {
"hhvm/asio-utilities": "
~
1.0"
}
6.2.1
等待句柄
等待句柄(
wait handle
)的概念是异步代码工作的核心内容。等待句柄是一个对象,它
代表了一个可能的异步操作,而这项操作可能完成了,也可能没有完成。如果它完成了,
你可以从等待句柄中获得一个结果。如果没有,你可以等待这个句柄。
等待句柄是用通用的接口
Awaitable
表示的。这里有很多实现了这个接口的类,但这些
都是实现的细节,你并不应该依赖它们。
这里有两种非常重要的等待句柄:
•
一种代表了异步函数。如果想获得其中一个,只需简单地调用一个异步函数:
async function ...