WebAPI Body.json 是异步的吗?

Is WebAPI Body.json asynchronous?

Body.jsonreturns a promise

此方法是否异步以避免在读取大型入站数据流时阻塞?

它是否会重复执行 setTimeout(sampleStream, 0) 之类的操作,直到找到流的结尾?

Is .json() asynchronous?

是的。这就是为什么它 returns 一个承诺。

Is this method asynchronous to avoid blocking on reading large inbound data streams?

是的。您在 headers 到达后立即收到 Response,收到 body 可能需要一些时间。

Does it do something like setTimeout(sampleStream, 0) repeatedly until the end of the stream is found?

不完全是。它不使用 setTimeout,它通过重复获取下一个块的承诺从流中读取 - 自己检查一下 reading all bytes from a ReadableStream
最重要的是,这一切都发生在后台任务上,无需担心 JavaScript。正如该部分的注释所述:因为 reader 授予独占访问权限,因此无法观察到实际的读取机制。如果方便的话,实现可以使用更直接的机制。