IndexedDB,Web SQLまたはWeb Storageを使用して、クライアントにデータを保存します(クライアントがストレージをサポートしていない場合はAJAXにフォールバックします)。ページが読み込まれると、ストアのデータが表示されます。しかし、DOMは準備ができていない可能性があるため、ストアが準備完了状態になっているときにデータを表示できません。2(以上)条件に応じてJSイベントを発生させる方法
明らかに、私はdomとstoreで設定されたフラグをチェックするいくつかの条件を実装することができます。タイムアウトを使用することもできますが、それはうんざりです(2つ以上の条件を満たす必要がある場合はうまく調整できません)。この状況に対処するための一般的な「良い」方法はありますか?私はクロスブラウザソリューション(例えば、watch
は動作しません)を好むでしょう。状況の
例:
// FooServiceFactory decides which storage method to use based on
// what the browser allows and returns a new instance of the
// implementation and starts initializing resources.
var fooService = FooServiceFactory.getInstance();
// DOM is ready
window.onload = function() {
// fooService may not be ready yet depending on whether
// storage has already been setup or if resources need to
// be retrieved from the server. But I don't want this calling
// JS to know about that.
fooService.getAllFoo(request, function(response, status) {
// do something with response
});
};
注:私は今の私自身の答えを受け入れたが、まだこれを処理するより良い方法を開いています。
どちらも準備ができているかどうかの条件付きフラグをチェックするのが賢明ではないと思われるのはなぜですか?それは私にとっては論理的なようです。 – Matt
@Matt、私のストレージはサービス層の背後に隠れています。それが間違いなく機能する間、フラグを持つことは[カプセル化]を破ります(http://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29)。私はDOMについて知っているサービスを望んでおらず、私がそれを助けることができれば、それを設定しなければならないグローバル変数についてJSが知りたいとは思わない。 –
@Matt、私は例で私の質問を更新しました。 –