在异步函数之后存活下来的 HttpRequest

作者: uNetworkingAB创建于 2024年3月15日更新于 2026年3月16日
标签enhancementbig stuff

有方法可以轻松支持更抽象的接口,例如 fetch,而不会在快速路径中造成明显的性能损失。请求是堆栈分配的,仅在"同步"回调中有效。添加一个调用,Request.keep(),可以动态分配它并使其"可保持",这可以自动适用于不返回响应的回调。这意味着,在快速路径中,没有额外开销,而在慢异步路径中,您仍然可以轻松地"保持"请求,直到您需要的时间为止,作为慢路径。这里的好处很明显:实现更抽象接口的包装器无需: * 循环遍历所有标头 * 为所有标头创建 JavaScript 字符串 * 无论是否要保持此对象都将传递此对象 这对于快速路径的性能来说是非常糟糕的。内部,只需要添加 2 个函数: getMemory 和 setMemory,以便 keep() 调用 malloc、getMemory、memcpy 和 setMemory 在请求上,并调用 free 来释放。

内容来源: uNetworking/uWebSockets.js