7

内線に情報を保存したい。以前はChrome.storage.syncそうしていましたが、保存した直後に読むと、値を正しく取得できません。おそらくばかげたことをしている....でローカルストレージをクリアしようとしましchrome.storage.sync.clearたが、それは役に立ちませんでした。

私の保存機能は次のとおりです(現在の方法を見てください):

save: function (type, key, data) {
    Storage.storageOption(type).set({key:data}, function () {
        console.log("saved data");
    });

load: function (type, key) {
    Storage.storageOption(type).get(key, function (object) {
        console.log("read : " +object);
        return object[key];
    })}

そしてそれを次のように呼び出します:

Storage.save("", 'path',username);
console.log(Storage.load("",'path'));

これにより、次のようになります。

セーブデータ

未定義

read : [オブジェクト オブジェクト]


アップデート:

OK、オブジェクトのキーと値のペアを渡す方法に問題があるようです。これは、次のように呼び出す場合です。 chrome.storage.sync.set({'path':username}, function(){});

コンソールにストレージを出力すると、出力が向上します。

未定義

シャイ

この未定義が何であるかはまだわかりません...


更新 2:

ストレージへの書き込みに成功した後、ドキュメントの準備ができたときに読み取りを試みます。次のコードを使用します。

var dbdata = chrome.storage.sync.get("path",function(object){
    return object['path'];
});

ただし、関数の本体は実行されませんが、ドキュメントには、どのような場合でも実行され、エラーの場合は lastError が設定されると記載されています。

助言がありますか?

4

1 に答える 1

16

chrome.storage.sync に渡す関数からの戻り値は、期待どおりの動作をしません。この値は、コールバック内でのみ使用できます。では終わらないdbdata

加えて:

chrome.storage.sync非同期 API です。

データを取得するには、完了するまで待つ必要があります。

chrome.storage.sync.set({'value': 12}, function() {
    chrome.storage.sync.get("value", function(data) {
      console.log("data", data);
    });
  });

出力は次のとおりです。

data Object {value: 12} 

manifest.json には以下が含まれている必要があります。

"パーミッション": [ "ストレージ" ],

于 2013-01-30T20:53:32.133 に答える