W3C home > Mailing lists > Public > whatwg@whatwg.org > December 2007

[whatwg] Asynchronous database API feedback

From: Dimitri Glazkov <dimitri.glazkov@gmail.com>
Date: Wed, 12 Dec 2007 13:18:56 -0600
Message-ID: <fb15ac210712121118o8955350lcfdbee7ea72aed76@mail.gmail.com>
Can you help me understand the problem you're pointing out? The
difference between the idea outlined and the current spec is the
absence of the transaction callback, but it basically (I think) has
the equivalent net effect.

db.createTransaction is just a mutable list of statements until the
execute method is called. In fact, it could even probably be just a JS
array.

tx.execute(..) immediately returns, then asynchronously (pardon the
sketchiness):
* opens transaction
* calls optional errorCallback if fails
* proceeds to execute statements in queue
* calls optional successCallback upon success.

I don't see it as being too much different from the spec's transaction
steps. In fact, I can easily see this written as a JS wrapper around
the current spec.

:DG<

On Dec 12, 2007 12:33 PM, Brady Eidson <beidson at apple.com> wrote:
> I think the issue you're forgetting is when opening a transaction can
> fail.  The transaction callback is only called when the transaction is
> successfully opened and you know that it is starting out valid.
>
> ~Brady
>
>
> On Dec 12, 2007, at 9:37 AM, Dimitri Glazkov wrote:
>
> > .. Speaking of batches, in my adventure of implementing the new SQL
> > spec, it looked like the transaction callback is mostly a functional
> > equivalent of a queue.
> >
> > So, one idea would be explicitly make it an queue-like structure,
> > rather than a function callback:
> >
> > var db = openDatabase('test');
> > var tx = db.createTransaction();
> > tx.add(db.sql('create table if not exists chickadees(name text, kind
> > text)'));
> > tx.add(db.sql('insert into chickadees values(?, ?)', ['moesha',
> > 'black-capped']));
> > tx.add(db.sql('select * from chickadees', [], function(rs) {
> > console.log(rs.rows.name); }));
> > tx.execute(function(error) {
> >       console.log('bird flip!');
> > });
> >
> > .. in which case single statements could be executed as:
> >
> > db.sql('select count(*) as count from chickadees', [], function(rs) {
> > console.log(rs.rows.count); }).execute();
> >
> > What do you think?
> >
> > :DG<
>
>
Received on Wednesday, 12 December 2007 11:18:56 UTC

This archive was generated by hypermail 2.3.1 : Monday, 13 April 2015 23:08:38 UTC