我想流式一个巨大的Array
(~1GB)到浏览器。
为了有效地执行此操作,我通过Express发送了一个分块响应,如下所示:
app.get('/chunked-response', (req, res) => {
[{ foo: 'bar' }, { foo: 'baz' }].forEach(item => {
res.write(JSON.stringify(item))
})
res.end()
})
我如何才能在浏览器中收到这些块?
例如,我想收到:
{ foo: 'bar' }
{ foo: 'baz' }
作为单独的事件。
XMLHttpRequest
会在response/responseText
上累积响应,因此我最终会再次耗尽内存注意:
我真的想避免质疑我为什么要发送如此大量的数据,并专注于如何做到这一点而不会遇到内存问题。
我也可以使用WebSockets来发送元素,但为了简单起见,我想专注于在单个请求中执行此操作