Veri yükleniyor ve bunları indexeddb veritabanında saklayın. Periyodik olarak veritabanı çöküyor ve ona erişimini kaybettim. Bana, lütfen, bir çözümün asenkron olarak indexeddb kullanılmasını sağlayın! BenAsenkron olarak IndexedDB ile nasıl çalışır?
Örnek kod şimdi kullanın: Sen uyumsuz IndexedDB veri yüklemek ve kaydetmek için vaat kullanabilirsiniz
var dataTotal = 0;
var threads = 6;
//openIndexeddbConnection();
function start(total){
dataTotal = total;
for (var i = 0; i < threads; i++) {
loadData(i);
}
}
function loadData(dataNum){
var dataNext = dataNum + threads;
if(dataNext > dataTotal){
//checkEnd();
return;
}
$.ajax({
url: baseUrl,
data: {offset: dataNum},
success: function (data) {
successData(dataNext, data);
},
type: 'GET'
});
}
function successData(dataNext, data){
var dataArray = data.split(';');
saveData(dataArray);
loadData(dataNext);
}
function saveData(dataArray){
putItem();
function putItem(i) {
var count = i || 0;
if(dataArray.length <= i){
return;
}
var transaction = Indexeddb.transaction([dataTableName], "readwrite");
transaction.onsuccess = function (event) {
//continue
putItem(count);
};
var objectStore = transaction.objectStore(dataTableName);
var request = objectStore.add({data: dataArray[count++]});
}
}
teşekkürler. Gelecekte temiz Promise veya rxjs kullanmak için planlamıştım. Promise ile daha rahat yakalama hataları. Ama ben herhangi bir hata olmadan kod yapmak istiyorum. Ayrıca, örnekte yeni bir indxedDBbut bağlantısı her açtığınızda, ancak sadece bir tane kullanın. Sanırım Concurrency Pattern: Producer and Consumer – Greg