Google chrome extension 监控存储节气门限值
我正在扩展中使用,希望避免触发运行时错误,因为超过同步或本地存储的一个。(例如Google chrome extension 监控存储节气门限值,google-chrome-extension,google-chrome-storage,Google Chrome Extension,Google Chrome Storage,我正在扩展中使用,希望避免触发运行时错误,因为超过同步或本地存储的一个。(例如QUOTA\u BYTES,QUOTA\u BYTES\u每个项目) 我的第一个选择是在生成运行时错误之前拦截这些错误;或者,我可以跟踪扩展端的使用情况,并尽量避免触发它们 这感觉像是一个必须有人解决的问题,但我似乎找不到任何解决方案-任何建议都值得赞赏。以下是我将要使用的解决方案示例(使用Angular,所以在这里有),尽管必须对chrome.runtime.lastError值进行正则化,但在我看来它非常难看: v
QUOTA\u BYTES
,QUOTA\u BYTES\u每个项目
)
我的第一个选择是在生成运行时错误之前拦截这些错误;或者,我可以跟踪扩展端的使用情况,并尽量避免触发它们
这感觉像是一个必须有人解决的问题,但我似乎找不到任何解决方案-任何建议都值得赞赏。以下是我将要使用的解决方案示例(使用Angular,所以在这里有),尽管必须对
chrome.runtime.lastError值进行正则化,但在我看来它非常难看:
var service = {
error: function(lastError) {
if((lastError) && (lastError.message)) {
var errorString = lastError.message;
if(/QUOTA_BYTES/.test(errorString)) {
return true;
} else if(/QUOTA_BYTES_PER_ITEM/.test(errorString)) {
return true;
} else if(/MAX_ITEMS/.test(errorString)) {
return true;
} else if(/MAX_WRITE_OPERATIONS_PER_HOUR/.test(errorString)) {
return true;
} else if(/MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE/.test(errorString)) {
return true;
}
return false;
} else {
return false;
}
},
write: function(key, value) {
var deferred = $q.defer();
var data = {};
data[key] = value;
chrome.storage.sync.set(data, function() {
if(service.error(chrome.runtime.lastError)) {
deferred.reject('Write operation failed: '
+ chrome.runtime.lastError.message);
} else {
deferred.resolve();
}
});
return deferred.promise;
}
};
return service;