Javascript 如何将参数传递到Chrome Storage get函数中,并将该参数设置为键?
因此,我有一个函数,它应该使用chrome存储API返回set key的保存值: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
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])代码>谢谢!我用的是点符号而不是括号符号。谢谢!我用的是点符号而不是括号符号。