如何将参数传递给 Chrome Storage get 函数,并将该参数设置为键?
How can I pass a parameter into the Chrome Storage get function, and set that parameter as the key?
所以我有这个功能,应该 return 使用 chrome 存储 API 设置键的保存值:
function loadBtn(id) {
return new Promise(resolve => {
chrome.storage.sync.get([id], function(result) {
resolve(result.id);
});
});
}
基本上,我正在查看所有具有相同 class 的元素,并保存它们的背景颜色值,并将键设置为它们的 ID。这就是我的意思(favBtnBG
只是一个 RGB 值):
$('.colorBtn').click(function() {
let favBtnBG = await loadRbgVal();
var id = $(this).attr('id');
chrome.storage.sync.set({ [id]: favBtnBG });
})
问题是当我尝试调用 loadBtn
函数时,它 return 未定义。我是这样称呼它的(控制台注销未定义)
$('.colorBtn').someListener(function() {
highlightedRgbVal = await loadBtn($(this).attr('id'));
console.log(highlightedRgbVal)
})
依我看,可能有两种错误。首先是我没有在存储中正确设置值。我认为在设置键时使用括号,变量id
的值被用作键,而不是字符串id
,但如果我错了请指正。
第二个可能的错误是我的loadBtn
函数有问题。该函数在我开始将 id
传递给它之前就在工作,所以我认为我没有正确传递它。
话虽如此,如何正确地将参数传递给 storage.sync.get()
函数?
const id = 'valueOfID';
chrome.storage.sync.get([id], function(result) {
console.log(result[id]);
});
在这种情况下,id 的值被替换,如果您的存储如下所示:
{
valueOfID: 'whateveryousetit'
}
然后您将登录 whateveryousetit
。
如果您只想从存储密钥 ID 中读取,则:
chrome.storage.sync.get(['id'], function(result) {
console.log(result.id);
});
使用此存储空间:
{
id: 'yourvalue'
}
您将登录 yourvalue
我认为您不能像这样组合异步等待和承诺。
您可以这样调用当前的加载函数:
loadBtn(id).then(idValueFromStorage) => {
console.log(idValueFromStorage)
}
就我个人而言,我认为为存储获取创建承诺包装器是毫无意义的。
您可以使用以下语法使其非常干净:
chrome.storage.sync.get(['yourStorageKey'], ({ yourStorageKey }) => {
console.log(yourStorageKey);
});
所以我有这个功能,应该 return 使用 chrome 存储 API 设置键的保存值:
function loadBtn(id) {
return new Promise(resolve => {
chrome.storage.sync.get([id], function(result) {
resolve(result.id);
});
});
}
基本上,我正在查看所有具有相同 class 的元素,并保存它们的背景颜色值,并将键设置为它们的 ID。这就是我的意思(favBtnBG
只是一个 RGB 值):
$('.colorBtn').click(function() {
let favBtnBG = await loadRbgVal();
var id = $(this).attr('id');
chrome.storage.sync.set({ [id]: favBtnBG });
})
问题是当我尝试调用 loadBtn
函数时,它 return 未定义。我是这样称呼它的(控制台注销未定义)
$('.colorBtn').someListener(function() {
highlightedRgbVal = await loadBtn($(this).attr('id'));
console.log(highlightedRgbVal)
})
依我看,可能有两种错误。首先是我没有在存储中正确设置值。我认为在设置键时使用括号,变量id
的值被用作键,而不是字符串id
,但如果我错了请指正。
第二个可能的错误是我的loadBtn
函数有问题。该函数在我开始将 id
传递给它之前就在工作,所以我认为我没有正确传递它。
话虽如此,如何正确地将参数传递给 storage.sync.get()
函数?
const id = 'valueOfID';
chrome.storage.sync.get([id], function(result) {
console.log(result[id]);
});
在这种情况下,id 的值被替换,如果您的存储如下所示:
{
valueOfID: 'whateveryousetit'
}
然后您将登录 whateveryousetit
。
如果您只想从存储密钥 ID 中读取,则:
chrome.storage.sync.get(['id'], function(result) {
console.log(result.id);
});
使用此存储空间:
{
id: 'yourvalue'
}
您将登录 yourvalue
我认为您不能像这样组合异步等待和承诺。 您可以这样调用当前的加载函数:
loadBtn(id).then(idValueFromStorage) => {
console.log(idValueFromStorage)
}
就我个人而言,我认为为存储获取创建承诺包装器是毫无意义的。 您可以使用以下语法使其非常干净:
chrome.storage.sync.get(['yourStorageKey'], ({ yourStorageKey }) => {
console.log(yourStorageKey);
});