0

Arbeiten an einer Chrome-Erweiterung. Ich bin mit dem folgenden, einige Daten zu meinem lokalen Speicher zu speichern:Abfragen des lokalen Speichereintrags ohne Fehler zu werfen

chrome.storage.local.set({ [variablyNamedEntry]: someObjectToBeSaved }); 

An anderer Stelle in meinem Code möchte ich abfragen, ob der Eintrag vorhanden ist, und wenn ja, werde ich auf lokale einige Variable „myVar“ wollen mit dem Objekt.

Wenn der Eintrag vorhanden ist, funktioniert dieser Code meine Ziele zu erreichen:

chrome.storage.local.get(null, function(result){ 
    myVar = result[variablyNamedEntry]; 
} 

Aber wenn kein Eintrag für „variablyNamedEntry“ existiert wirft es einen Fehler. Ich könnte diesen Fehler mit einer try/catch-Sequenz verwalten. Aber das kann nicht der beste Ansatz sein, da ich weiß, dass es den Eintrag nicht in einem sehr großen Prozentsatz der Zeit finden wird.

Wie kann ich mein Ziel erreichen?

Update:

ich versuchte mit:

chrome.storage.local.get([variablyNamedEntry], function(result){ 
    if (result != undefined) 
     myVar = result[variablyNamedEntry]; 
} 

Aber ich immer noch die folgenden Fehlermeldung erhalten, wenn der Eintrag nicht existiert:

extensions::uncaught_exception_handler:8 Error in response to storage.get: TypeError: Cannot read property 'someProperty' of undefined 
+0

Pass '[variablyNamedEntry]' als erstes Argument an '. get() '. Dann sollte der Callback überprüfen, ob der Ergebnisparameter nicht null ist, und wenn der Eintrag gefunden wurde, wird er in diesem Objekt vorhanden sein. – Pointy

+0

Dies löst immer noch eine nicht abgefangene Ausnahme aus, wenn der Eintrag nicht gefunden wird. – COMisHARD

+0

Welche Ausnahme wird ausgelöst? Wenn Sie sicherstellen, dass "Ergebnis" nicht null/undefiniert ist, bevor Sie versuchen, auf den Wert zuzugreifen, gibt es keine Ausnahme. – Pointy

Antwort

2

Bitte the items parameter for the callback of chrome.storage.local.get is always an object bewusst sein, und würde nie sein undefined.

Angenommen, Sie einen Schlüsselwert haben, in dem Schlüssel 'Sample-Key' ist, könnten Sie den folgenden Code verwenden

chrome.storage.local.get(null, function(result){ 
    if(typeof result['Sample-Key'] !== 'undefined') { 
     console.log(result['Sample-Key']); 
    } 
}); 

Oder

chrome.storage.local.get('Sample-Key', function(result){ 
    if(typeof result['Sample-Key'] !== 'undefined') { 
     console.log(result['Sample-Key']); 
    } 
});