- From: Nikunj R. Mehta <nikunj.mehta@oracle.com>
- Date: Wed, 7 Oct 2009 08:29:36 -0700
- To: Jonas Sicking <jonas@sicking.cc>
- Cc: Garrett Smith <dhtmlkitchen@gmail.com>, Web Applications Working Group WG <public-webapps@w3.org>, arun@mozilla.com
On Oct 6, 2009, at 10:07 PM, Jonas Sicking wrote:
>> [...]
>>
>>>
>>> Jonas' API:
>> // Don't forget var.
>>> reader = new FileReader;
>>> reader.readAsBinaryString(myFile);
>>
>> // What happens when we start a second read?
>> reader.readAsText(myFile);
>> // Race is on.
>>> reader.onload = handler;
>>> function handler(event) {
>>> doStuffWith(event.target.response);
>>> }
>>>
>>
>> What is the order of expected outcome with multiple reads, as above?
>
> The second read cancels the first one. So after the readAsText call
> returns you'll only get events fired regarding that second load.
You might be confusing reponseXML and responseText mechanisms with
send(). You can read either at different rates and it doesn't cause
any problems. Also, attributes will behave differently than methods,
and programmers factor that in their design.
To be sure, XHR does not allow *multiple* send() calls on an object.
Step 2 of the send() method in 4.6.3 [1] checks if the send() method
has already been called on the object. If so, an INVALID_STATE_ERR
exception is raised and send() method is terminated. In effect, the
second read fails.
Nikunj
http://o-micron.blogspot.com
[1] http://www.w3.org/TR/2009/WD-XMLHttpRequest-20090820/
Received on Wednesday, 7 October 2009 15:32:25 UTC