On Tue, 19 Sep 2006 14:01:41 -0000, Alexey Proskuryakov
<ap-carbon@rambler.ru> wrote:
> I have tried searching the archives, but couldn't find this already
> discussed.
>
> The specification defines states 1 and 2 as:
> 1 Open. The open() method has been successfully called.
> 2 Sent. The UA successfully completed the request, but no data has yet
> been
> received.
>
> For async requests, send() MUST return immediately, i.e. even before
> resolving the hostname. However, it is also specified that the state
> MUST be
> set to Sent, which apparently violates its definition.
>
> In my tests, WinIE 6, Firefox 1.5 and Safari 2 all do not change
> readyState in an async send(). This effectively means that state Open is
> followed by an additional pseudo-state with the same numerical value
> (e.g.,
> Safari currently ignores subsequent send() requests).
So one way of doing it would be that after the request is completed you go
to 2, then quickly to 3 and even quicker to 4 dispatching readystatechange
in the process. Another way of doing it would be to go directly to 4 for
async requests and dispatch readystatechange when going from 1 to 4.
The people I talked to about this feel that doing the latter makes more
sense and I tend to agree. It also means you can easily switch between
async and sync requests.
--
Anne van Kesteren
<http://annevankesteren.nl/>
<http://www.opera.com/>