首页 > 解决方案 > 使用 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 字符串而只获取部分字符串。

我想知道我是否做错了什么,或者是否有更好的方法来完成上述操作。

任何帮助/建议表示赞赏。

谢谢!

标签: javascriptreactjsexpressecmascript-6fetch-api

解决方案


推荐阅读