Body.json
返回一个promise。
这种方法是否异步,以避免在读取大型入站数据流时发生阻塞?
它是否重复执行类似setTimeout(sampleStream, 0)
的操作,直到找到流的末尾?
.json()
是异步的吗?
是的。这就是它回报承诺的原因。
这种方法是否异步,以避免在读取大型入站数据流时发生阻塞?
是的。您在标头到达之后立即收到Response
,并且接收正文可能需要一些时间。
它是否重复执行类似
setTimeout(sampleStream, 0)
的操作,直到找到流的末尾?
不完全是。它不使用setTimeout
,它通过重复获得下一个块的promise来从流中读取——只需检查自己是否从ReadableStream中读取所有字节
最重要的是,这一切都发生在后台任务中,而不需要考虑JavaScript。正如该部分的注释告诉的那样:由于读者授予独占访问权限,因此无法观察到如何阅读的实际机制。如果方便的话,实现可以使用更直接的机制