5

मैं क्या समझ, यदि आप Chrome भंडारण एपीआई जो आप लगातार आइटम जोड़ना चाहते हैं में संग्रहीत एक सरणी करना चाहते से, आप कुछ इस तरह की जरूरत है:क्रोम स्टोरेज एपीआई में एक सरणी में मैं कुशलता से आइटम कैसे जोड़ूं?

function addToHistory(url) { 
    chrome.storage.sync.get('history', function(obj) { 
     var history = obj.hasOwnProperty('history') ? obj.history : []; 
     history.push(url); 
     chrome.storage.sync.set({'history': history}, function() { 
      if (chrome.runtime.lastError) 
       console.log(chrome.runtime.lastError); 
      else 
       console.log("History saved successfully"); 
     }); 
    }); 
} 

इस कोड को मुझे परेशान; लोडिंग और फिर उसी सरणी को हर बार को सहेजते हुए आप अंत में एक ही आइटम को धक्का देते हैं, विशेष रूप से यदि आपकी history सरणी कई हजार प्रविष्टियां प्राप्त करना शुरू करती है)।

क्या ऐसा करने का कोई और अधिक प्रभावी तरीका है? मुझे लगता है कि मैं एक सरणी को धक्का देना चाहता हूं, तो क्या यह पहले से ही इसे प्राप्त करने का एक अनुशंसित तरीका है?

उत्तर

0

मुझे नहीं लगता कि chrome.storage.sync API आपको जो चाहिए वह आदर्श है। असल में यह एपीआई उपयोगकर्ता प्राथमिकताओं या सरल और संक्षिप्त डेटा को याद रखने के लिए बहुत अच्छा है। सिंक API जैसे उपयोग के लिए सीमाएं हैं: - 8 आइटम प्रति डेटा के केबी - - सभी डेटा के लिए 102.4 KB भंडारण में रखा 1,800 प्रति घंटे लिखते हैं

तो तुम कुछ ऐतिहासिक स्टोर करने के लिए इस API का उपयोग करने की योजना बना अगर डेटा ऐप बहुत तेजी से सीमा से अधिक हो सकता है।

मुझे लगता है कि आप एक एक्सटेंशन विकसित कर रहे हैं, ऐप नहीं। ऐप में आपके पास chrome.syncFileSystem API तक पहुंच है जिसका उपयोग किसी फ़ाइल में सिंक करने योग्य डेटा को सहेजने के लिए किया जा सकता है।

अपने प्रश्न का उत्तर देने से आपके फ़ंक्शन को अनुकूलित करने का कोई भी तरीका नहीं है। आप समय-समय पर डेटा को स्टोर करने का प्रयास कर सकते हैं - उदाहरण के लिए हर 30 सेकंड या तो। उपयोगकर्ता को ऐप बंद करने के बाद आपको डेटा को सहेजने के लिए याद रखना होगा।

आप इस मान को स्मृति में चर के रूप में भी संग्रहीत कर सकते हैं और जब उपयोगकर्ता स्क्रीन छोड़कर ऐप बंद कर लेता है तो उसे सहेज सकता है लेकिन यह खतरनाक है क्योंकि ऐप एसिंक्रोनस कार्य पूर्ण होने से पहले बंद हो सकता है।

वैसे भी मुझे लगता है कि यह एपीआई आपके ऐप के लिए सबसे अच्छा समाधान नहीं है।

संबंधित मुद्दे