[whatwg] executeSql API is synchronous
aa at google.com
Wed Aug 8 14:05:00 PDT 2007
FWIW, We (the gears team) considered adding an async version of our
sql execute() method, but decided against it in favor of improving the
Async APIs work OK for a few requests, but a single logical update to
a local database might be made up of many SQL statements. Stringing
these all together with async APIs is a big pain, especially if
results must be passed between the statements.
A background worker allows you to express long strings of database
logic in simple synchronous code. You can even intermingle
_synchronous_ httprequests between the database operations. So
synchronization logic, for example, turns into simple looping code.
On 8/8/07, Maciej Stachowiak <mjs at apple.com> wrote:
> The executeSql() API returns a result synchronously. In general, SQL
> databases may be slow to access since they need to be read from disk,
> and if the database is not open already there's unlikely to be a ready
> cache. This may make it hard to use the executeSql() API without
> blocking the UI. All other HTML DOM operations that may require I/O to
> complete are asynchronous, with the exception of synchronous
> XMLHttpRequest which (a) causes UI lockup problems in practice and (b)
> at least has an async variant.
> The original Google Gears API that inspired executeSql gets around
> this by providing a threading facility, so that worker threads can do
> all the database access.
> I think to make it possible to use executeSql without risk of harming
> interactivity, we need either an async version, or a worker thread API.
More information about the whatwg