İndeksliDB'nin nesne deposuna ~ 35000 nesne kaydetmek istiyorum. Eklemek için aşağıdaki kodu kullanıyorum.Büyük miktarlarda IndexedDB'nin nesne deposu bloklarına ekleme UI
AddListings = function (x2j_list_new, callback) {
var transaction = db.transaction(["listings"], IDBTransaction.READ_WRITE);
var count = 0;
transaction.oncomplete = function (event) {
if (callback) {
console.log('x2jShowListing Added ' + count + '/' + x2j_list_new.length);
callback([count, x2j_list_new.length]);
}
};
transaction.onerror = function (e) {
console.log("myError: ", e);
if (callback) {
callback(false);
}
};
var store = transaction.objectStore("listings");
$.each(x2j_list_new, function (index0, item0) {
var request = store.put(item0);
request.onsuccess = function (event) {
count++;
// event.target.result
};
});
});
};
yukarıdaki kod çalışıyor ama döngüye ve ~ 35.000 nesneleri üzerinde ekleme ~ 200 saniye boyunca tepkisiz UI yapar. WebWorkers'ı kullanabileceğimi düşündüm, ancak IndexedDB WebWorkers içinde kullanılamaz. Toplu yerleştirmenin bir yolunu bulmaya çalıştım, bir tane bulamadım. Kullanıcı arayüzünü engellemeden büyük miktarda nesnenin nasıl ekleneceği hakkında herhangi bir fikir var mı?
(http://stackoverflow.com/questions/ 8495687/bölünmüş-dizi-in-chunks) 500 ve [setInterval] kullanarak (http://www.kryogenix.org/days/2009/07/03/not-blocking-the-ui-in-tight-javascript- döngü için). Şimdi UI öncekinden biraz daha iyi tepki veriyor. – surya