Я хочу сохранить ~ 35000 объектов в моем объекте storeedDB. Я использую ниже код для вставки.
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
};
});
});
};
Вышеприведенный код работает нормально, но цикл и вставка более ~ 35000 объектов делает пользовательский интерфейс невосприимчивым в течение ~ 200 секунд. Я думал, может быть, я могу использовать WebWorkers, но IndexedDB недоступен внутри WebWorkers. Я попытался найти способ для массовой вставки, не смог найти его. Любые идеи о том, как вставлять большие количества объектов без блокировки пользовательского интерфейса?