捕获/捕获chrome存储同步错误

时间:2018-01-29 21:25:50

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

如果我们使用此代码:

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);
});

2 个答案:

答案 0 :(得分:1)

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

在回调中使用try ... catch无法提供帮助。另外,

它是异步的,因此在原始API调用周围使用try也无法提供帮助。

答案 1 :(得分:1)

你可以宣传它可以更好地管理错误和回调地狱。

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);
});