- From: Ojan Vafai <ojan@chromium.org>
- Date: Mon, 24 Oct 2011 16:01:51 -0700
- To: Jonas Sicking <jonas@sicking.cc>
- Cc: Webapps WG <public-webapps@w3.org>, Eric Uhrhane <ericu@google.com>
- Message-ID: <CANMdWTuNFrEgNtLYEKcVnwCPDoiyOSHka4Ha5ueA_zOoBs-kpA@mail.gmail.com>
On Mon, Oct 24, 2011 at 3:52 PM, Jonas Sicking <jonas@sicking.cc> wrote: > Hi everyone, > > It was pointed out to me on twitter that BlobBuilder can be replaced > with simply making Blob constructable. I.e. the following code: > > var bb = new BlobBuilder(); > bb.append(blob1); > bb.append(blob2); > bb.append("some string"); > bb.append(myArrayBuffer); > var b = bb.getBlob(); > > would become > > b = new Blob([blob1, blob2, "some string", myArrayBuffer]); > I like this API. I think we should add it regardless of whether we get rid of BlobBuilder. I'd slightly prefer saying that Blob takes varargs and rely on ES6 fanciness to expand the array into varargs. In theory, a BlobBuilder could be backed by a file on disk, no? The advantage is that if you're building something very large, you don't necessarily need to be using all that memory. You can imagine a UA having Blobs be fully in-memory until they cross some size threshold. > or look at it another way: > > var x = new BlobBuilder(); > becomes > var x = []; > > x.append(y); > becomes > x.push(y); > > var b = x.getBlob(); > becomes > var b = new Blob(x); > > So at worst there is a one-to-one mapping in code required to simply > have |new Blob|. At best it requires much fewer lines if the page has > several parts available at once. > > And we'd save a whole class since Blobs already exist. > > / Jonas > >
Received on Monday, 24 October 2011 23:02:38 UTC