2017-03-04 12 views
0

私はChromeの拡張機能では、このような何かを行う場合は、それが正常に動作します:Chromeローカルストレージでダイナミックキーを取得して設定する方法は?

chrome.storage.local.set({"Foo1": dataValue}); 

そして、これは大丈夫です:

chrome.storage.local.get("Foo1", callback); 

しかし、私は別の使用できるように、私は抽象これらの情報機能を試しますさまざまな状況のためのキー名:その後、

function saveLocalData(dataKey, dataValue){ 
    chrome.storage.local.set({dataKey: dataValue}); 
} 
saveLocalData("Foo1", "hello foo"); 

...と、この:

function getLocalData(dataKey, callback){ 
    chrome.storage.local.get(dataKey, callback); 
} 
getLocalData(dataKey, myCallbackFunction); 

...両方保存は成功したようだが、検索時に、私は唯一の空のオブジェクトを持っているように思われます。私はクロームのdevのツールで私のコードを通じて段階と戻ってくる[オブジェクト]を検討している - それがnullではない - 空と役に立たないように思われ、それは腸のどこかでダウン私のデータを持っている場合、私は」することができますそれを見つけるように見える。

私もこれを試してみましたが、無いより良い結果を:(私はキーの名前と値を渡すことができるように

function getLocalData(dataKey, callback){ 
    dataKey = "\"" + dataKey + "\""; 
    chrome.storage.local.get(dataKey, callback); 
} 

function saveLocalData(dataKey, dataValue){ 
    dataKey = "\"" + dataKey + "\""; 
    chrome.storage.local.set({dataKey: dataValue}); 
} 

機能に抽象ローカルストレージゲッターとセッターにはいくつかの方法があるに違いありません保存する)、その後、正しいキー名を渡して目的の値を取得します。クッキーはこのように動作しますが、ローカルストレージには私が理解していない何らかのブードーがあります。私はgetLocalData()のコールバック関数しか使用していません。セッターでコールバックは必要ないからです。コールバック関数が入力されていると私は、一見、空[オブジェクト]を取得 - - 私のコールバックが働いているそれだけでnullではありません。

役立つ、と事前に感謝してください。

答えて

1

変数はES6における新しい計算されたキーを使用することなく、キーとして使用することができません。あなたはコールバック関数をラップしている場合、あなたはpromisesを使用すると、おそらくもasync/await必要があり、また

chrome.storage.local.set({ [ "key" + 1 ]: "value" + 1 }) 

:chrome.storageを使用して

console.log({ [ "key" + 1 ]: "value" + 1 })

+0

感、ダニエル、感謝をします。それは、厄介な回避策を強制する無意味な制限のように思えますが。 – HerrimanCoder