javascript - 在请求结束前使用 fetch 获取 HTTP 结果
问题描述
我正在尝试使用/api/stream
Drone 1.0 服务器的端点。此端点保持 HTTP 连接打开,并仅流式传输新的即将发生的事件以通知消费者事件。
我尝试使用 javascript Fetch API 处理那段代码
await fetch("https://drone.company.com/api/stream/", {
headers
})
.then(function(response) {
return response.text();
})
.then(function(data) {
console.log(data);
});
此代码运行良好,但then
始终在请求结束后调用回调。
有没有办法可以在请求处理时获取接收到的主体流?
解决方案
你可以阅读response.getReader()
喜欢
let response = await fetch("https://drone.company.com/api/stream/", {
headers
});
const reader = response.body.getReader();
while(true) {
const {done, value} = await reader.read();
if (done) {
break;
}
const text = new TextDecoder("utf-8").decode(value);
console.log(`Received ${text}`)
}
我们需要使用TextDecoder
,因为value
包含 Uint8Array 数据而不是文本。IE不支持。fetch
顺便说一句,也不支持。
推荐阅读
- java - 替换 XWPFDocument 表上的文本不起作用
- c - 从 C 套接字发送和接收数据的安全编码。我应该进行哪些检查?
- python - Django - get_context_data() 缺少 1 个必需的位置参数:'form'
- assembly - 为什么这个阶乘程序给出的结果较低?
- mysql - SQL处理子查询错误代码:1111
- javascript - 将具有未知键的字典转换为 Earh 引擎中的特征集合
- scip - SCIP 如何计算 vanillafullstrongbranching-scores?
- javascript - 点击打开菜单
- opengl - 不做 glDeleteBuffers 和其他 OpenGL (3.3) 清理可以吗?
- javascript - 在 d3 力模拟中,有没有办法强制远离某些固定点?