跳转至

ev-drogon-coroutine-binder-001

字段 值
项目 drogonframework/drogon
固定 commit 3aae769cc405
路径 lib/inc/drogon/HttpBinder.h
行段 L408-L417
特性 协程
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-25
测试代码 否
发现方式 tree-sitter

用法

调度器按处理器返回类型分支,在 lambda 协程内 co_await 异步结果

为什么典型

框架同时支持普通回调、Task<> 与 Task;这一段用 if constexpr 判断返回类型后直接 co_await,说明协程返回类型已被当作一等接口参与重载分派。

摘录

                        else if constexpr (std::is_same_v<
                                               Task<>,
                                               typename traits::return_type>)
                        {
                            // Explicit copy because `callFunction` moves it
                            auto cb = callback;
                            co_await callFunction(req,
                                                  cb,
                                                  std::move(values)...);
                        }

备注

生产路径;co_await 使该 lambda 自身成为协程,框架用返回类型 Task<> 表达“只等待、不产生响应对象”。

查看固定 commit 源码 · 返回证据索引