问题标签 [whatwg-streams-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
493 浏览

javascript - 将客户端生成的响应作为下载流式传输,无需服务人员

假设我有一个在客户端生成的大文件,我希望允许用户将其保存到他们的硬盘上。

通常的方法是创建一个 Blob,然后为其创建一个对象 URL:

这可行,但效率不高,因为它可以快速耗尽所有可用内存,因为生成的文件必须保留在内存中。

更好的方法将启用流式传输。像这样的东西:

今天有直接的方法吗?

我见过的流式传输的唯一方法是使用 Service Worker。不幸的是,在许多情况下 Service Worker 不可用。隐私模式可能会绕过所有服务人员。硬刷新页面会禁用它们。打开浏览器工具可以重置 service worker 状态。工人可以随时被杀死,并且不能保证通过消息传递使其保持活力。所有这些 hack 都在这里的一个优秀项目中实现: https ://github.com/jimmywarting/StreamSaver.js 但是,归根结底,由于这些浏览器的限制,它是不可靠的。

是否存在用于在不使用服务工作者的情况下流式传输“下载”客户端的适当 API?

0 投票
0 回答
33 浏览

javascript - 在 Firefox 78.2 上下载大文件时,ReadableStream 中途停止

我正在使用 ReadableStream API 流式传输包含超过 300,000 行数据的 128 MB 大型 CSV 文件的块。我已经按照MDN ReadableStream 文档创建了一个 ReadableStream 并将块排入队列,但不知何故 ReadableStream 停止读取中途。它最终只读取 40,000 行。我的代码:

  • 在 Chrome 和 Edge 上,文件正确加载:在此处输入图像描述
  • 在 Firefox 上,它只是挂了一半:在此处输入图像描述
0 投票
1 回答
118 浏览

javascript - javascript streamreader 仅在#log-box.append 中显示第二个块

我正在努力学习 JQuery/Javascript,并有一个使用 chrome“实验”网络串行 API 的网络应用程序。当我输入命令并得到响应时,该字符串在随机位置分成两部分,通常在前三分之一:

<p0><iDCC-EX V-0.2.1 / MEGA / STANDARD_MOTOR_SHIELD G-9db6d36>

所有其他返回消息都更短,并且也包含在“<”和“>”括号中。

在下面的代码中。日志窗口只显示第二个块,即使在“ChunkTransformer() 例程中同时在 devtools 控制台日志中正确显示它。

如何让我的所有返回消息显示为一个字符串?如果块被括号分割为单独的返回值,只要它们显示在日志中,就可以了。我认为<p0>没有显示,因为日志窗口认为它是一个特殊字符。它甚至不会显示在这里,直到我包裹在一个代码标签中。所以我认为我至少有两个问题。