-
Notifications
You must be signed in to change notification settings - Fork 390
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
请教一个promise异步的问题 #24
Comments
当调用 hello 的时候,如果是异步客户端,并不是立即发起网络调用,而是先返回一个 $promise 对象,这个东西相当于一个占位符,然后程序继续往下执行,直到遇到 $client->loop() 这条语句,才开始执行执行网络传输,这个时候可能已经有多个调用请求了,这些请求会并发的进行,然后根据收到最终结果的顺序来充填 $promise 对象,$promise 对象被充填后,它的 then 方法中的回调就会执行。 当没有显式的执行 $client->loop(); 时,那等到 $client 的析构方法执行时,会自动执行 $client->loop();,所以你会看到结果在 exit 输出的 123 之后。 |
上面说的是 Hprose\Http\Client 的实现方式,Hprose\Swoole\Http\Client 则是直接使用 swoole_http_client 客户端来实现的异步。在实现方式上完全不同,不过使用方式上没有区别。 |
原来如此,确实没有仔细看__destruct方法。谢谢指导! |
不客气。因为 __destruct 不一定会执行,所以对于 Hprose\Http\Client 和 Hprose\Socket\Client 来说,最好是手动在合适的位置调用 loop 方法。Swoole 客户端就不需要了(Swoole 客户端也没有这个方法)。 |
在学习hprose的过程中,遇到了一个惊到一众phper的效果
php version 5.6.20
结果的话大大应该也清楚了
真异步了!学艺不精,研习了一天源码也没有搞懂这个异步到底是怎么实现的。只有前来请教了。
The text was updated successfully, but these errors were encountered: