You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让AnyEvent实现顺序执行?优化AnyEvent与Coro结合的代码

AnyEvent 与 Coro 集成的代码优化方案

你可以直接利用Coro提供的rouse_cb和rouse_wait机制简化代码,替代手动创建condvar的流程,优化后的代码如下:

use AnyEvent::HTTP;
use Coro;

async {
  # 优化后的代码
  my ($data, $hHeaders) = http_request(GET => $url, Coro::rouse_cb);
  …
}

说明

Coro::rouse_cb会生成一个回调函数,当http_request完成时自动触发;http_request在接收这个回调后,会直接返回Coro::rouse_wait的结果,省去了手动创建条件变量、绑定回调、调用recv的三步操作,代码更简洁直观。


官方推荐方式:在man AnyEvent中,还给出了一种更贴合AnyEvent::HTTP的写法,核心思路和上面一致,但用http_get简化了GET请求的调用:

AnyEvent::HTTP::http_get $url, Coro::rouse_cb;
my ($body, $hdr) = Coro::rouse_wait;

内容的提问来源于stack exchange,提问作者AnFi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:57:26