Windows平台Chrome浏览器多fetch请求未异步执行问题
浏览器并行Fetch请求串行执行,Svelte服务端接收请求延迟问题
我正在用Svelte开发网站,前端服务基于Svelte,后端采用NestJS,当前处于本地开发阶段。
初始问题
我从页面向Svelte的+server.ts端点发送请求,该端点会将请求转发至NestJS后端。我使用Promise.all一次性发送6个并行请求,Svelte服务端转发后需要等待NestJS的响应(该过程为耗时操作,通常需要4-5秒)。从浏览器网络面板可以验证,页面会立刻发出所有请求,但Svelte服务端接收这些请求却耗时很久(约6-7秒),第一个请求之后接收速度明显变慢,我不清楚延迟的原因。
我在+server.ts文件中使用了async/await,最初认为Svelte服务端在等待NestJS响应时不会被阻塞,它应该会自动处理异步操作(比如创建工作进程),这个假设是不是错误的?
排查更新
后续发现问题与Svelte无关。我做了如下测试:
编写了一个简单HTML文件,代码如下:
<script> fetch("https://httpbin.org/delay/5", { method: "GET" }).then(() => { console.log("1"); }); fetch("https://httpbin.org/delay/5", { method: "GET" }).then(() => { console.log("2"); }); fetch("https://httpbin.org/delay/5", { method: "GET" }).then(() => { console.log("3"); }); fetch("https://httpbin.org/delay/5", { method: "GET" }).then(() => { console.log("4"); }); fetch("https://httpbin.org/delay/5", { method: "GET" }).then(() => { console.log("5"); }); </script>
该API端点会延迟5秒响应,用来模拟耗时请求。我原本预期所有console.log会几乎同时输出,但实际却是串行执行——一个请求完成后才会执行下一个。同样的代码在Node.js中可以异步并行执行,我使用的是Windows 11系统上的最新版Chrome浏览器。
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

