में बड़ी मात्रा में डालने से मैं अपने इंडेक्सड डीबी के ऑब्जेक्टस्टोर में कुछ ~ 35000 ऑब्जेक्ट्स को सहेजना चाहता हूं। मैं डालने के लिए नीचे कोड का उपयोग कर रहा हूँ।इंडेक्स डीडी के ऑब्जेक्टस्टोर ब्लॉक यूआई
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 सेकंड के लिए अनुत्तरदायी बना देता है। मैंने सोचा कि शायद मैं वेबवर्कर्स का उपयोग कर सकता हूं, लेकिन इंडेक्सड डीबी वेबवर्कर्स के अंदर उपलब्ध नहीं है। मैंने थोक डालने का रास्ता खोजने की कोशिश की, एक नहीं मिला। यूआई को अवरुद्ध किए बिना बड़ी मात्रा में वस्तुओं को सम्मिलित करने के बारे में कोई विचार?
(http://stackoverflow.com/questions/ 8495687/स्प्लिट-एरे-इन-चंक्स) 500 का और [setInterval] का उपयोग करके (http://www.kryogenix.org/days/2009/07/03/not-blocking-the-ui-in-tight-javascript- लूप के बजाय लूप)। अब यूआई पहले से थोड़ा बेहतर प्रतिक्रिया देता है। – surya