html5のclient side databaseの非同期が辛すぎる。 - あおうさ@日記と書いたばかりでしたが、タイムリーなことにid:secondlifeさんが素晴らしいライブラリを公開されました。それがjsdeferred-webdatabaseです。
ライブラリ作成の動機は次のように語られています。
WebDatabase は非同期で扱う openDatabase API のみ *1 なため、すべての SQL の結果は非同期で扱うことになる。で、DB を非同期で扱うというのがものすごくめんどくさくて、いろいろ書くのがめんどくさくなってきたので、めんどくささが味わいたい人は今すぐ直接 openDatabase を利用してみよう!
そうなんです。非同期処理のめんどくささがたまんないんです。(いやマジでつらいよこの非同期は。。)たぶんこの非同期のつらさを味わった人なら感動するライブラリ。ちょうど私もJSDeferredを使って同期ぽく書くライブラリを作成しようと考えていたところ素晴らしきライブラリが公開されたというわけ。そこでAlexRecordのサンプルをためしにjsdeferred-webdatabaseで書いてみました。
http://id-bluerabbit.appspot.com/html/jsdeferred-webdatabase.html
※safariで動作します。
ライブラリのダウンロードと使い方
- jsdeferred
- jsdeferred-webdatabase