私は、簡単なはずの問題で最も苦労しています。配列を使用してユーザーの単語のリストを保存するクロム拡張機能を作成しています。起動時に、配列に適切な量の単語を追加できるように、経過時間を確認します。ここのコードに従いましたChromeストレージに値をプッシュする方法次のように:
function addToWords(url) {
chrome.storage.local.get(function(cfg) {
if(typeof(cfg["myWords"]) !== 'undefined' && cfg["myWords"] instanceof Array) {
cfg["myWords"].push(url);
}
chrome.storage.local.set(cfg);
});
}
しかし、私が何をしても、この関数を何回呼び出しても、配列に追加された関数の最後の呼び出しのみが取得されます。たとえば、これが私の「myWords」配列である場合、次のようになります。
["dog"]
そして、私は電話をかけました
addToWords("horse");
addToWords("bird");
addToWords("pig");
addToWords("cat");
["dog","cat"] という 2 つの項目を持つ配列が残ります。表示されていないコードに何か問題がありますか? ありがとう
編集:非同期コールバックメソッドを設定した後に同じ問題を抱えている人は、storage.localとstorage.syncに注意してください!! ローカルに設定してコンソールで同期をチェックしていたため、非同期が機能していませんでした (これが新しい値が存在しなかった理由です)。ご協力いただきありがとうございます。非同期の提案と同じストレージの使用により、問題なく動作します!