Await似乎被忽略了(JavaScript)

时间:2019-02-11 02:07:44

标签: javascript google-chrome-extension

一段时间以来,我一直想创建一个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基本功能,所以我完全跳过了。

我非常感谢您的帮助。

0 个答案:

没有答案