Я разрабатываю расширение chrome, которое использует chrome.storage.local, и пытаюсь создать обещание из асинхронной функции chrome.storage.local.get(), из которой я хотел бы иметь возможность создавать исключения из а также отклонить/разрешить. Я пытался протестировать это с помощью приведенной ниже реализации, но вижу ошибку, которая из журналов консоли кажется из строки «readLocalStorageObj("prefs").then(function(item) {
» (ошибка показана ниже после кода).
require([
"libs/bluebird"
],
function(Promise) {
function readLocalStorageObj(itemName) {
var localReadResult = Promise.method(function(item) {
console.log("localReadResult():", item);
// if (chrome.runtime.lastError) {
// throw new Error(chrome.runtime.lastError);
// }
if (Object.getOwnPropertyNames(item).length > 0) {
console.log('in if part');
return item;
}
else {
console.log('in else part');
// throw new Error("my test exception");
return undefined;
}
});
chrome.storage.local.get(itemName, localReadResult);
return localReadResult;
};
readLocalStorageObj("prefs").then(function(item) {
console.log('success', item);
}, function(e) {
console.log('fail', e);
}).error(function(e) {
console.log('error', e);
}).catch(ChromeRuntimeError, function(e) {
console.log('catch', e);
}).finally(function(a) {
console.log('finally', a);
});
});
Ошибка:
Uncaught TypeError: Object function Promise$_method() { var value; switch(arguments.length) { case 0: value = tryCatch1(fn, this, void 0); ломать; случай 1: значение = tryCatch1(fn, this, arguments[0]); ломать; дело......н'
Я не могу понять, в чем причина этого, и был бы очень признателен за любую помощь в этом.
ТИА
Promise.method
в этой ситуации не имеет смысла. - person Esailija   schedule 20.03.2014