- From: Aaron Boodman <aa@google.com>
- Date: Wed, 12 Aug 2009 16:54:33 -0700
- To: Ian Hickson <ian@hixie.ch>
- Cc: "Nikunj R. Mehta" <nikunj.mehta@oracle.com>, Maciej Stachowiak <mjs@apple.com>, Jonas Sicking <jonas@sicking.cc>, public-webapps WG <public-webapps@w3.org>
On Wed, Aug 12, 2009 at 4:33 PM, Ian Hickson<ian@hixie.ch> wrote: > On Mon, 3 Aug 2009, Aaron Boodman wrote: >> > >> > The API was intentionally made more obviously synchronous to avoid >> > having to make people use callbacks. >> > >> > Would making all transactions automatically rollback if not committed >> > when the event loop spins be an acceptable substitute solution? >> >> A few problems with this: >> >> - In the case of workers, it could be more common for a single event >> loop entry to last a very long time. So closing the transaction on event >> loop exit could effectively mean "never". > > I don't think reentrant callbacks really get around that much, though > maybe they make it a little more obvious. My point was just that using a closure eliminates the case where a transaction gets left open because of buggy code. It eliminates the problem where a transaction should have been closed, but wasn't. You're right that it does nothing for an infinite loop inside a transaction. Nothing will save us from that. >> I also don't see what not having a callback buys. I'm not sure if you >> noticed, but I was suggesting that the callback be reentrant. So if you >> do this: >> >> var theResult = null; >> database.syncTransaction(function(tx) { >> theResult = tx.executeSQL("select * from ...").rows[0].val; >> }); >> alert(theResult); >> >> It will do the right thing. Are you concerned that developers won't >> realize that the callback is reentrant and will invest more effort >> writing their code in an asynchronous style? > > The only reason for not using callbacks in the sync API was that callbacks > are harder to work with than the straight-forward imperative style. > > I can change the spec to a hybrid style with statements in the imperative > form but the transactions themselves using closures. Would that be ok? Yes, that is what I was proposing. - a
Received on Wednesday, 12 August 2009 23:55:13 UTC