7

Ich habe ein kleines Snippet mit LocalStorage arbeiten, aber ich kann es noch nicht mit Chrome Storage Schema arbeiten.Wie überprüft man, ob eine Variable auf Chrom-Speicher gesetzt ist

Wenn meine Anwendung startet ich eine Variable in localstorage überprüfe

var bookNarration=parseInt(localStorage.getItem("narration")); 

Wenn diese Variable nicht definiert ist, bedeutet es, dass mein App zum ersten Mal geöffnet wurde und ich nach bookLanguage in einem Schalter mit dem Griff " Standard "Deklaration.

switch(window.bookNarration) 
    { 
    case 2: 
     window.narrationShift = window.spanishShift; 
    break; 
    case 3: 
     window.narrationShift = window.frenchShift; 
    break; 
    case 10: 
     window.narrationShift = window.neutralShift; 
    break; 
    default: 
     window.narrationShift = 0; } 

Um es mit Chrome Lagerung funktioniert ich meinen Code auf diese Weise zu ändern:

var bookNarration=parseInt(chrome.storage.local.get("narration")); 

Aber ich sofort diesen Fehler:

Invocation of form get(string) doesn't match definition get(optional string or array or object keys, function callback)

ich viele Stunden lang gesucht haben Ich versuche eine Lösung zu finden, aber ich kann es nicht funktionieren lassen. Ich denke, dass ich nur überprüfen muss, ob der Wert bereits definiert ist, wenn dies nicht der Fall ist, könnte ich set() -Methode verwenden, um meinen Standardwert zu speichern.

Antwort

8

Die Funktion expects a callback:

chrome.storage.local.get("narration", function(data) 
{ 
    if(chrome.runtime.lastError) 
    { 
     /* error */ 

     return; 
    } 

    var bookNarration = parseInt(data.narration); 

    switch(bookNarration) 
    { 
     /* ... */ 
    }; 
}); 
+0

Es funktioniert existieren! Ich verwende den Haken, um die Standardwerte einzurichten. Vielen Dank! –

+0

Ich glaube, letzte Zeile sollte sein: "});" – Kudlas

+0

@Kudlas Sie glauben richtig. Vielen Dank. –

1

Es gibt keine Notwendigkeit, jetzt um den Fang zu verwenden (ich weiß nicht, was bedeutet, wenn diese seit der akzeptierten Antwort geändert und jetzt).

Sie können in der Position übergeben (s), die Sie mit Standardwerten zusammen sollte nicht das Element

chrome.storage.local.get({narration: "", num: 0, books: []}, function(data) 
{ 
    var bookNarration = parseInt(data.narration); 

    switch(bookNarration) 
    { 
     var numBooks= data.books.length 
     /* ... */ 
    }; 
}); 
Verwandte Themen