Javascript 如何将参数传递到Chrome Storage get函数中,并将该参数设置为键?

Javascript 如何将参数传递到Chrome Storage get函数中,并将该参数设置为键?,javascript,jquery,google-chrome-extension,google-chrome-storage,Javascript,Jquery,Google Chrome Extension,Google Chrome Storage,因此,我有一个函数,它应该使用chrome存储API返回set key的保存值: function loadBtn(id) { return new Promise(resolve => { chrome.storage.sync.get([id], function(result) { resolve(result.id); }); }); } 基本上,我正在查看具有相同类的所有元素,并保存它们的背景色值,键设置为它们的ID。我的意思是(favBt

因此,我有一个函数,它应该使用chrome存储API返回set key的保存值:

 function loadBtn(id) {
  return new Promise(resolve => {
    chrome.storage.sync.get([id], function(result) {
      resolve(result.id);
    });
  });
}
基本上,我正在查看具有相同类的所有元素,并保存它们的背景色值,键设置为它们的ID。我的意思是(
favBtnBG
只是一个RGB值):

问题是,当我尝试调用
loadBtn
函数时,它返回undefined。以下是我如何称呼它(控制台未定义注销)

在我看来,可能有两个错误。第一个可能是我没有在存储器中正确设置值。我认为通过在设置键时使用括号,可以使用变量
id
的值作为键,而不是字符串
id
,但是如果我错了,请纠正我

第二个可能的错误是我的
loadBtn
函数有问题。在我开始将
id
传递到函数之前,该函数正在工作,因此我认为我没有正确地传递它

话虽如此,如何正确地将参数传递给
存储.sync.get()
函数?

const id = 'valueOfID';
chrome.storage.sync.get([id], function(result) {
      console.log(result[id]);
});
在这种情况下,id的值被替换,如果您的存储如下所示:

{
      valueOfID: 'whateveryousetit'
}
loadBtn(id).then(idValueFromStorage) => {
   console.log(idValueFromStorage)
}
然后您将记录您设置的内容。 如果您只是想读取存储密钥id,则:

chrome.storage.sync.get(['id'], function(result) {
      console.log(result.id);
});
使用此存储:

{
      id: 'yourvalue'
}
您将记录
yourvalue

我认为您不能将async Wait和这样的承诺结合起来。 您可以这样调用当前加载函数:

{
      valueOfID: 'whateveryousetit'
}
loadBtn(id).then(idValueFromStorage) => {
   console.log(idValueFromStorage)
}
就我个人而言,我认为为存储创建promise包装是毫无意义的。 您可以使用以下语法使其非常清晰:

chrome.storage.sync.get(['yourStorageKey'], ({ yourStorageKey }) => {
    console.log(yourStorageKey);
});
在这种情况下,id的值被替换,如果您的存储如下所示:

{
      valueOfID: 'whateveryousetit'
}
loadBtn(id).then(idValueFromStorage) => {
   console.log(idValueFromStorage)
}
然后您将记录您设置的内容。 如果您只是想读取存储密钥id,则:

chrome.storage.sync.get(['id'], function(result) {
      console.log(result.id);
});
使用此存储:

{
      id: 'yourvalue'
}
您将记录
yourvalue

我认为您不能将async Wait和这样的承诺结合起来。 您可以这样调用当前加载函数:

{
      valueOfID: 'whateveryousetit'
}
loadBtn(id).then(idValueFromStorage) => {
   console.log(idValueFromStorage)
}
就我个人而言,我认为为存储创建promise包装是毫无意义的。 您可以使用以下语法使其非常清晰:

chrome.storage.sync.get(['yourStorageKey'], ({ yourStorageKey }) => {
    console.log(yourStorageKey);
});

AFAICT,您需要修复的只是
resolve(结果[id])AFAICT,您只需修复
解析(结果[id])谢谢!我用的是点符号而不是括号符号。谢谢!我用的是点符号而不是括号符号。