0

http://nparashuram.com/jquery-indexeddb/で入手できるJQueryIndexedDBプラグインを使用しています。以下は、オブジェクトストアproject_createdに対して反復するコードです。このコードを実行すると、objectstoretask_createdが繰り返される前にssにアラートが送信されます。ただし、論理的には、objectstoretask_createdが繰り返された後にのみssにアラートを送信する必要があります。

$.indexedDB("sl_task_tracker").objectStore("project_created").each(function(elem){
        var count_tasks=0;
        $.indexedDB("sl_task_tracker").objectStore("task_created").each(function(item){
            if(item.value.project_id==elem.key)
                count_tasks++;
        });

        alert("ss");
});
});
4

2 に答える 2

1

これは、IndexedDB が非同期 APIを使用しているためだと思います。IndexedDB に関連するすべての処理は、メイン スレッドをブロックしないように (Web サイトが修正されたように見えないように) 、「別のスレッド」で行われます。

このプラグインについてはわかりませんが、「onSuccess」関数をタスクに渡すことができるかどうかを確認する必要があります。これにより、タスクが完了したときに何が起こるかを指定できます。

使用しているプラ​​グインの詳細については、開発者の github ページでいつでも質問できます: https://github.com/axemclion/jquery-indexeddb

(技術的な英語が下手で申し訳ありません。もっとわかりやすい言語で自由に編集してください)

于 2012-09-14T07:31:23.530 に答える
0

非同期性と混乱を招く API を緩和するために、小さな jquery プラグイン (まだ非常にアルファ版) を作成しました。

https://github.com/ameyms/jquery-indexeddb

そして、私は API を非常にシンプルに保つように努めました。

//Define and initialize an IndexedDB ...
var db = $.idb({
                    name:'foobar', 
                    version: 2,
                    drop: stores_to_be_deleted,
                    stores:list_of_stores
                });

// ... Add objects to a store
db.put(items, 'into_store').done(onsuccess);

//.. And delete objects from a store
db.remove('from_store', conditionFunc).done(onremoval);

//.. And not to forget fetching objects from a store
db.select('from_my_store', conditionFunc).done(function (items){

    console.log(items)
});

気に入っていただければ幸いです。

于 2013-09-23T08:45:21.137 に答える