命名与匿名函数具有承诺的不同行为

时间:2021-01-15 13:22:04

标签: javascript firefox-addon

我遇到了一个最终解决的错误,但为什么会发生(ed/s)仍然无法解决。

我使用 browser.storage.local.set 为我正在开发的 firefox 插件保存了一个变量 foo。我知道变量已设置,明显的错误依赖于导致此问题的一小段代码:

browser.storage.local.get((val) => {
  if (val['foo'] === undefined){
    console.log('Undefined');
  }
  else {
    console.log('Defined')
  }
});
// Outputs `Defined`, which is correct.

但是,如果我先定义回调,然后得到错误的输出。

function checkStoredSettings(val) {
  if (val['foo'] === undefined) {
    console.log('Undefined')
  }
  else {
    console.log("Defined")
  }
}

browser.storage.local.get().then(checkStoredSettings, console.log);
// Outputs `Undefined`, which is incorrect.

//UPDATE
browser.storage.local.get(checkStoredSettings);
// Outputs `Undefined`, which is also incorrect.

有人能解释一下我在这里没有得到什么吗?我现在已经在同一范围内按顺序(按两个顺序)运行了上述两个代码。

1 个答案:

答案 0 :(得分:0)

你有没有尝试过类似的事情?

browser.storage.local.get('foo').then(console.log)