一段时间以来,我一直想创建一个Chrome扩展程序,最近又开始这样做。设置和从存储中获取内容的默认方式有点笨重,我想简化一下。但是,我对async / await并不是很熟悉,所以我对到底出了什么问题感到困惑。
这是我在打开扩展程序时运行的代码:
function set(key, value, callback) {
if (typeof callback === "function") {
chrome.storage.sync.set({[key]: value}, callback());
} else {
chrome.storage.sync.set({[key]: value}, function() {});
}
}
async function get(key, callback) {
var r;
if (typeof callback === "function") {
chrome.storage.sync.get([key], callback);
} else {
console.log("before await: ");
await chrome.storage.sync.get([key], function(result) { r = result; console.log("during awiat: " + r); });
console.log("after await: " + r);
return r;
}
}
window.addEventListener("load", async function load(event) {
set("test", 12);
console.log("final result: " + await get("test"));
});
这就是控制台记录的内容:
javascript.js:14 before await:
javascript.js:16 after await: undefined
javascript.js:31 final result: undefined
javascript.js:15 during awiat: [object Object]
(顺便说一下,对象的内容是{test: 12}
。换句话说,set
函数有效,而get
函数无效)
我想知道为什么第16行要在第15行之前运行,并且是否存在一些async / await基本功能,所以我完全跳过了。
我非常感谢您的帮助。