2016-06-11 2 views
3

Прежде всего, я прошу прощения, если этот вопрос звучит аналогично другим. Я провел много исследований, и я думаю, что не могу объединить свою ситуацию и проблемы с другими людьми с этим API.Не удается сохранить и получить из хранилища Chrome

Я создаю хром-приложение, которое в основном демонстрирует возможность хранения и извлечения данных из API хранения Chrome. Как только мне будет удобно это делать, я могу реализовать это в более крупном приложении, которое я делаю.

Однако я не могу заставить основное приложение работать. Вот соответствующий код:

"storage.js"

function Store(key,data) { 

    console.log("Data: " + data); 

    chrome.storage.local.set({ key: data }, function() { 

     console.log("Secret Message Saved!"); 

    }); 

} 

function Retrieve() { 

    chrome.storage.local.get(function (data) { 

     console.log("The data stored is:" + data); 

    }); 

} 

"master.js" (основной сценарий)

var myKey = "secretMessage"; 
var myData = "Pssst!"; 

Store(myKey, myData); 

Retrieve(myKey); 

console.log("Done!"); 

Я в недоумении. Выход, который я получаю, составляет:

Data: Pssst! 
Done! 
Secret Message Saved! 
The data stored is:[object Object] 

Похоже, что либо я неправильно, либо неправильно ошибаюсь.

Я просмотрел документацию. Возможно, я просто не понимаю концепцию API и то, что он может хранить и извлекать. Я довольно новичок в кодировании на языке javascript. Любая помощь приветствуется!

Спасибо!

+0

Немного любопытно: почему вы используете хром-хранилище вместо универсального localStorage/indexdb, чтобы ваш код работал на всех веб-платформах, которые поддерживают современные API, а не намеренно выпекают платформу-несовместимость? –

+0

@ Mike'Pomax'Kamermans Поскольку это мой первый раз, когда я писал хром-приложение, и потому что я очень новичок в этой области, я на самом деле не знаком с этим средством хранения. Насколько сложно забирать хром-память api? – TheBlindDeveloper

+0

не очень, вы можете увидеть документацию localstorage api здесь: http://www.w3schools.com/html/html5_webstorage.asp – SkullDev

ответ

4

Во-первых, chrome.storage.local.set & chrome.storage.local.get являются асинхронные методы, вы должны ждать, пока chrome.storage.local.set хранит данные в памяти, то вам следует обратиться к chrome.storage.local.get.

Во-вторых, chrome.storage.local.get возвращает объект. Вы можете просмотреть объект с помощью .toString() или JSON.stringify(data)

function Store(key,data, callback) { 

    console.log("Data: " + data); 

    chrome.storage.local.set({ key: data }, function() { 

     console.log("Secret Message Saved!"); 
     callback(true); 

    }); 

} 

function Retrieve(success) { 

    chrome.storage.local.get(function (data) { 

     console.log("The data stored is:" + JSON.stringify(data)); 

    }); 
} 

var myKey = "secretMessage"; 
var myData = "Pssst!"; 

Store(myKey, myData, Retrieve); 

console.log("Done!"); 
0

Я использовал этот метод обратного вызова без проблем.

function loadSelectedStyle(){ 
    chrome.storage.local.get('defaultColorSet', function (result) { 
     console.log(result.defaultColorSet); 
     defaultColors(result.defaultColorSet); 
    }); 
} 

Если вы просто пишете «результат» в журнале консоли, вы можете увидеть весь объект, путем добавления ключа в результате Вы получаете данные.

Смежные вопросы