【问题标题】:Catching / capturing chrome storage sync errors捕获/捕获 chrome 存储同步错误
【发布时间】:2018-02-01 07:49:56
【问题描述】:

如果我们使用这段代码:

chrome.storage.sync.set({settings: x}, function() {
    console.log('Settings saved');
});

捕获错误的最佳方法是什么,这是正确的方法吗?

chrome.storage.sync.set({settings: x}, function() {
        if (chrome.runtime.lastError) {
          return cb(chrome.runtime.lastError);
        }
        console.log('Settings saved');
        cb(null);
});

【问题讨论】:

    标签: google-chrome-extension google-chrome-storage


    【解决方案1】:

    是的,这是使用所有 chrome 异步 API 捕获错误的最佳方式。

    在您的回调中使用 try ... catch 将无济于事。还有,

    它是异步的,因此在原始 API 调用周围使用 try 也无济于事。

    【讨论】:

      【解决方案2】:

      您可以承诺它可以更好地管理错误和回调地狱。

      var promisify = function (fn) {
        var args = Array.prototype.slice.call(arguments).slice(1);
        return new Promise(function(resolve, reject) {
          fn.apply(null, args.concat(function (res) {
            if (chrome.runtime.lastError) {
              return reject(chrome.runtime.lastError);
            }
            return resolve(res);
          }));
        });
      };
      

      那么你可以如下使用它:

      function setStorageItems(items) {
        return promisify(chrome.storage.sync.set, items);
      }
      
      setStorageItems({settings: 'x'}).then(function() {
        console.log('settings saved');
      })
      .catch(function (err) {
        console.error(err);
      });
      

      【讨论】:

      • 是的,这就是计划,问题只是关于如何访问错误,因为它似乎不是错误优先回调,所以我猜chrome.runtime.lastError 是获得的最佳方式相关错误
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      相关资源
      最近更新 更多