V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
dou4cc

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

  •  
  •   dou4cc · Mar 11, 2017 · 2509 views
    This topic created in 3334 days ago, the information mentioned may be changed or developed.
    老方法是改 charset ( http://web.archive.org/web/20080821092906/http://mgran.blogspot.com/2006/08/downloading-binary-streams-with.html ),新方法是改 responseType ,新方法性能好,语义清晰,然而我还是使用老方法,因为老方法在正文接收完全前可以读取正文,做到流式加载,而新方法不行~
    Supplement 1  ·  Mar 11, 2017
    刚刚找到了 ReadStream API ,这个问题解决了
    4 replies    2017-03-14 10:38:21 +08:00
    dou4cc
        1
    dou4cc  
    OP
       Mar 11, 2017
    那么问题来了,怎么覆盖 BOM ?
    zbinlin
        2
    zbinlin  
       Mar 12, 2017
    xhr 里有这个 API ?还是指的是 fetch API 里的 ReadableStream ?
    dou4cc
        3
    dou4cc  
    OP
       Mar 13, 2017
    @zbinlin 指的是 fetch ,不过好像哪里不对
    dou4cc
        4
    dou4cc  
    OP
       Mar 14, 2017
    @zbinlin fetch 不能及时 abort , stream 的粒度也难以控制,连 nightly 都不支持。我现在想到的迂回办法是仍然使用 xhr ,如果检测到 charset 不再是 x-user-defined ,就 abort 当前连接,使用 Range 标头错开一字节重新发起请求,再在单独的连接中使用 responseType 为 arraybuffer 的请求补上错开的那个字节
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5930 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:57 · PVG 09:57 · LAX 18:57 · JFK 21:57
    ♥ Do have faith in what you're doing.