我正在开发一个小的Chrome扩展程序,允许我将一些记录保存到chrome.storage然后显示它们。
我已经设法让设置和进程工作按照我的意愿(有点),但现在我想在保存任何记录之前添加一个重复的检查,而且我很难找到一个好的和清洁解决方案
这就是我现在想出来的:
var storage = chrome.storage.sync;
function saveRecord(record) {
var duplicate = false;
var recordName = record.name;
storage.get('records', function(data) {
var records = data.records;
console.log('im here');
for (var i = 0; i < records.length; i++) {
var Record = records[i];
if (Record.name === recordName) {
duplicate = true;
break;
} else {
console.log(record);
}
}
if (duplicate) {
console.log('this record is already there!');
} else {
arrayWithRecords.push(record);
storage.set({ bands: arrayWithRecords }, function() {
console.log('saved ' + record.name);
});
}
});
}
我基本上在包含记录的数组上进行迭代,并检查name属性是否已存在。问题是它打破了基本设置并获得了功能 - 事实上,正确保存时会记录'im here'
和相对记录对象,但它没有设置值。另外,一段时间后(通常在尝试使用基本的storage.get
函数列出乐队之后),它会返回此错误:
对storage.get的响应出错:TypeError:无法读取属性 'name'为null
我猜这是由于该组的异步性质以及我的无能和它的工作,但我无法理解它以找到更好的选择。想法?
提前致谢。