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;