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

Fetch Promise何时resolve?图像传输及res.blob()机制问询

Fetch Promise的resolve时机与HTTP传输细节

1. Fetch Promise何时resolve?

当服务器返回HTTP响应头(包含状态码、Content-Type等元数据)后,fetch的Promise就会立刻resolve,此时.then中的代码开始执行。这个时机不需要等待整个响应体(比如你的图像文件)传输完成。

2. resolve时图像是否已完全传输?

没有。fetch的Promise resolve仅代表响应头已接收,响应体的传输可能刚刚开始,或者已经传输了一部分,但肯定还没完成(除非图像极小,刚好和响应头一起传完,但这种情况极少)。

3. 能否认为resolve时图像还未开始传输?

不能。HTTP协议是流式传输模型,服务器在发送完响应头后,会紧接着开始发送响应体数据。所以当fetch Promise resolve时,图像数据的传输大概率已经在进行中了。

4. 调用await res.blob()是否会触发新的服务器通信?

不会。fetch请求在调用fetch()时就已经发起,服务器已经开始流式传输响应体。res.blob()的作用是消费Response对象中的可读流(ReadableStream),把接收到的所有响应体数据收集起来,转换成Blob格式。这个过程完全在本地处理,不会向服务器发送额外请求。

简单来说:fetch负责发起请求并拿到响应头,而res.blob()/res.text()等方法负责等待并处理完整的响应体数据。

内容的提问来源于stack exchange,提问作者Llama D'Attore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:20:44