我正在制作一个小型Chrome扩展程序。我想使用chrome.storage
但我无法从存储中删除多个项目(数组)。单项清除工作。
function clearNotes(symbol)
{
var toRemove = "{";
chrome.storage.sync.get(function(Items) {
$.each(Items, function(index, value) {
toRemove += "'" + index + "',";
});
if (toRemove.charAt(toRemove.length - 1) == ",") {
toRemove = toRemove.slice(0,- 1);
}
toRemove = "}";
alert(toRemove);
});
chrome.storage.sync.remove(toRemove, function(Items) {
alert("removed");
chrome.storage.sync.get( function(Items) {
$.each(Items, function(index, value) {
alert(index);
});
});
});
};
似乎没有什么破坏,但是最后一个警告存储中的内容的循环仍然显示我想要删除的所有值。
答案 0 :(得分:9)
当您将字符串传递给sync.remove
时,Chrome会尝试删除其键与输入字符串匹配的单个项目。如果您需要删除多个项目,请使用一组键值。
此外,您应该将remove
来电转移到get
回调中。
function clearNotes(symbol)
{
// CHANGE: array, not a string
var toRemove = [];
chrome.storage.sync.get( function(Items) {
$.each(Items, function(index, value)
{
// CHANGE: add key to array
toRemove.push(index);
});
alert(toRemove);
// CHANGE: now inside callback
chrome.storage.sync.remove(toRemove, function(Items) {
alert("removed");
chrome.storage.sync.get( function(Items) {
$.each(Items, function(index, value)
{
alert(index);
});
});
});
});
};