优化后的代码如下所示:
typescript
import { serve, Response, ServerRequest } from "https://deno.land/std/http/server.ts";
import { pooledMap } from "https://deno.land/std/async/pool.ts";
async function web(request: ServerRequest): Promise<Response> {
console.log(request);
console.log(new URL(request.url));
const body = `Your user-agent is:\n\n${request.headers.get("user-agent") ?? "Unknown"}`;
return {
status: 200,
body: body,
};
}
const server = serve({ port: 8080 });
const concurrency = window.navigator.hardwareConcurrency - 1;
pooledMap(concurrency, server, async (req: ServerRequest) => {
await req.respond(await web(req));
});
在这个优化的代码中,我主要进行了如下几个调整:
使用import语句引入了serve、Response和ServerRequest等需要的模块,以提高代码的可读性和模块化。
将原来的web函数修改为异步函数,并返回一个Promise对象。
使用serve函数启动服务器,并将其返回的对象存储在server变量中。
简化了原来的循环处理逻辑,使用await req.respond(await web(req))直接响应请求。
增加了concurrency变量来调整并发数,取window.navigator.hardwareConcurrency - 1。
简化了注释,使其更加简洁明了。