今天突然有了用 xhr 处理二进制的需求

2017-03-11 15:51:29 +08:00
 dou4cc
老方法是改 charset ( http://web.archive.org/web/20080821092906/http://mgran.blogspot.com/2006/08/downloading-binary-streams-with.html ),新方法是改 responseType ,新方法性能好,语义清晰,然而我还是使用老方法,因为老方法在正文接收完全前可以读取正文,做到流式加载,而新方法不行~
2199 次点击
所在节点    JavaScript
4 条回复
dou4cc
2017-03-11 16:18:47 +08:00
那么问题来了,怎么覆盖 BOM ?
zbinlin
2017-03-12 20:35:39 +08:00
xhr 里有这个 API ?还是指的是 fetch API 里的 ReadableStream ?
dou4cc
2017-03-13 10:21:23 +08:00
@zbinlin 指的是 fetch ,不过好像哪里不对
dou4cc
2017-03-14 10:38:21 +08:00
@zbinlin fetch 不能及时 abort , stream 的粒度也难以控制,连 nightly 都不支持。我现在想到的迂回办法是仍然使用 xhr ,如果检测到 charset 不再是 x-user-defined ,就 abort 当前连接,使用 Range 标头错开一字节重新发起请求,再在单独的连接中使用 responseType 为 arraybuffer 的请求补上错开的那个字节

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/346679

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX