- From: Ian Hickson <ian@hixie.ch>
- Date: Wed, 3 Jun 2009 07:27:36 +0000 (UTC)
- To: Doug Reeder <dreeder5@columbus.rr.com>
- Cc: public-webapps@w3.org
On Sat, 4 Apr 2009, Doug Reeder wrote:
>
> The scenario where I need to use HTML 5 Database storage requires
> storing a tree of data. Each item has a unique id, generated by the
> database. Child nodes have a "parentId" field which points to their
> parent ID. Creating the records for a new tree in the database requires
> multiple transactions. First, the root item must be created. When the
> callback returns, the children of the root item can be created, because
> the id of the root item is now known. For each child, when the
> appropriate callback returns, the children of the child can be created,
> because their parent IDs are now known, and so forth.
>
> Minimizing the number of transactions (and thus the overall time to
> create a database) requires there be multiple transactions outstanding
> at any given time. Thus, when a callback function is called, it needs
> to determine _which_ transaction has completed. The current version of
> the HTML 5 Database storage spec does not make this easy. It is
> straightforward for my app to generate a unique ID for each transaction,
> but the spec provides no way to pass this to the callbacks. In
> JavaScript, I can add an "id" field to the transaction object, but then
> the _same_ id gets passed to each statement callback, and the
> transaction object is not passed _at all_ to the transaction success
> callback.
>
> I'm sure there are other scenarios where it would be useful for a
> statement callback to know which statement has completed, and for a
> transaction callback to know which transaction has just completed.
Don't closures do what you want? Instead of always using the same function
as the callback, create a new function each time, with that function
having the identifier in question, as in:
function getCallback(id) {
return function (transaction) {
// ... the callback ...
};
}
//... n is some identifier
db.transaction(getCallback(n));
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Wednesday, 3 June 2009 07:28:11 UTC