如果我们使用此代码:
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);
});
答案 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);
});