W3C home > Mailing lists > Public > whatwg@whatwg.org > March 2013

Re: [whatwg] asynchronous JSON.parse

From: David Bruant <bruant.d@gmail.com>
Date: Fri, 08 Mar 2013 17:35:00 +0100
Message-ID: <513A1334.8070602@gmail.com>
To: David Rajchenbach-Teller <dteller@mozilla.com>
Cc: whatwg@whatwg.org
Le 08/03/2013 15:29, David Rajchenbach-Teller a écrit :
> On 3/8/13 1:59 PM, David Bruant wrote:
>>> Consider, for instance, a browser implemented as a web application,
>>> FirefoxOS-style. The data that needs to be collected to save its current
>>> state is held in the DOM. For performance and consistency, it is not
>>> practical to keep the DOM synchronized at all times with a worker
>>> thread. Consequently, data needs to be collected on the main thread and
>>> then sent to a worker thread.
>> I feel the data can be collected on the main thread in a Transferable
>> (probably awkward, yet doable). This way, when the data needs to be
>> transfered, the transfer is fast and heavy processing can happen in the
>> worker.
> Intuitively, this sounds like:
> 1. collect data to a JSON;
I don't understand this sentence. Do you mean "collect data in an object"?
Just to be sure we use the same vocabulary:
When I say "object", I mean something described by ES5 - 8.6 [1], so 
basically a bag of properties (usually data properties) with an internal 
[[Prototype]], etc.
When I say "JSON", it's a shortcut for "JSON string" following the 
grammar defined at ES5 - 5.1.5 [2].
Given the vocabulary I use, one can collect data in an object (by adding 
own properties, most likely), then serialize it as a JSON string with a 
call to JSON.stringify, but one cannot collect data in/to a JSON.

> 2. serialize JSON (hopefully asynchronously) to a Transferable (or
> several Transferables).
Why not collect the data in a Transferable like an ArrayBuffer directly? 
It skips the additional serialization part. Writing a byte stream 
directly is a bit hardcore I admit, but an object full of setters can 
give the impression to create an object while actually filling an 
ArrayBuffer as a backend. I feel that could work efficiently.

What are the data you want to collect? Is it all at once or are you 
building the object little by little? For a backup and for FirefoxOS 
specifically, could a FileHandle [3] work? It's an async API to write in 
a file.

David

[1] http://es5.github.com/#x8.6
[2] http://es5.github.com/#x5.1.5
[3] https://developer.mozilla.org/en-US/docs/WebAPI/FileHandle_API
Received on Friday, 8 March 2013 16:35:37 GMT

This archive was generated by hypermail 2.3.1 : Friday, 8 March 2013 16:35:37 GMT