带镀铬存储的切换值

Switching Values with chrome storage

本文关键字:存储      更新时间:2024-02-05

我想通过单击图片来保存布尔值,每次单击图片时,该图片的状态都会从true变为false。

所以我只想写一些类似的东西

function SwitchByImage(propertyName) {
   var oldValue=chrome.storage.sync.get({propertyName}, null);
   var newValue=!oldValue;
   chrome.storage.sync.set({propertyName:newValue},null);
   if (newValue) { 
      $("#whateverimage").attr("src","upimage.jpg");
   } else {
      $("#whateverimage").attr("src","downimage.jpg");
   }
}

知道这不起作用。我添加的"null"应该是一个函数。我的问题是:存储是异步工作的,所以似乎不可能按顺序写入和读取数据。

解决这个问题的最佳方法是什么?

由于chrome.storage.sync.get是异步的,所以提取的值将在回调中可用,因此代码的其余部分应该放在那里:

function SwitchByImage(propertyName) {
    chrome.storage.sync.get(propertyName, function(items) {
        var oldValue = items[propertyName];
        var newValue = !oldValue;
        chrome.storage.sync.set({ propertyName: newValue });
        if (newValue) { 
            $("#whateverimage").attr("src", "upimage.jpg");
        } else {
           $("#whateverimage").attr("src","downimage.jpg");
        }
    });
}