无法存储和从Chrome存储中检索

时间:2016-06-11 20:50:20

标签: javascript google-chrome google-chrome-app

首先,如果这个问题与其他问题听起来相似,我会道歉。我做了很多研究,我想我不能把我的情况和其他人对这个API的问题拼凑起来。

我正在创建一个Chrome应用,它基本上展示了从Chrome Storage API存储和检索数据的功能。一旦我很乐意这样做,我就可以在我正在制作的更大的应用程序中实现这一点。

但是,我似乎无法让基本应用运行起来。这是相关代码:

" 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语言进行编码是相当新的。任何帮助将不胜感激!

谢谢!

2 个答案:

答案 0 :(得分: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!");

答案 1 :(得分:0)

我已经毫无问题地使用了这种回调方法。

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

如果你只是写'结果'在控制台日志中,您可以通过添加键来查看整个对象,从而获得数据。