javascript - 使用 React/Fetch 处理来自 Node/Express 后端的数据块
问题描述
我创建了一个 Express 后端,它使用 res.write(JSON.stringify(JSONChunk)) 将 JSON 数据作为文本块发送。
我想在反应前端处理和处理 res.write 的每个块,并使用以下方法:
我的后端伪代码
for(let i = 0; i < slices; i ++) {
var JSONChunck = await getData(i); // getData operation can take some time
res.write(JSON.stringify(JSONChunck));
}
res.end();
FE 伪代码:
fetch(API, OPTS).then(async (response) => {
const reader = response.body.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) {
break;
}
var text = new TextDecoder("utf-8").decode(value);
var result = JSON.parse(text);
var processedResult = process(result);
}
})
但是,当我在某些系统中尝试上述代码时,我在尝试执行 JSON.parse(text) 时收到错误消息,并看到“text”的值没有获取完整的 JSON 字符串而只获取部分字符串。
我想知道我是否做错了什么,或者是否有更好的方法来完成上述操作。
任何帮助/建议表示赞赏。
谢谢!
解决方案
推荐阅读
- node.js - nodejs 的 web 服务和日期出现延迟一天
- javascript - 我必须单击 2x 或 3x 才能在 React 中关闭手风琴元素
- greenplum - 在主节点上调用 Greenplum 5.11 gpload 时挂起
- r - 使用 group_by 和管道函数循环遍历数据帧列表?
- javascript - 如何使用 nodeJs 制作本地服务器?
- javascript - 使用 jquery 向 ap 元素显示和添加文本
- python - 检查客户端是否仍然连接 - 使用 UDP 的 Python 套接字编程
- google-drive-api - 如何在 Flutter 应用中集成 google drive?
- android - Android volley 图像加载导致我的服务器负载过重
- python - 当两列具有相同的值时查找 Delta - sql server