无法让 Edge 在我的 WebExtension 中实现 Return Promise

Can't get Edge to Return a Promise in my WebExtension

我正在尝试使用我的 background.js WebExtension 中的 browser.tabs.create() 创建一个新选项卡,如下所示:

createTab: function () {
    var newTab = browser.tabs.create({ url: someUrl });
    newTab.then(onCreated, onError);
}

新标签页在浏览器中创建,但是当到达最后一行时,抛出错误:

SCRIPT5007: Unable to get property 'then' of undefined or null reference

当地人 window 显示 newTabundefined

我在这里做错了什么?我以为 .create() 会立即 return 一个 Promise。我知道 create() 是一个异步函数 - 但我的调用函数不需要异步,对吗?

如有任何帮助,我们将不胜感激。

我最终读完了 Microsoft documentation(谁知道?)并遇到了这个 gem:

看起来很确定;现在我只需要一个使用回调的例子...

正如 Scott Baker 已经提到的,遗憾的是 Microsoft Edge 扩展 API 不支持承诺。

所以你可以参考this MDN example关于如何使用回调:

browser.windows.onCreated.addListener((tab) => {
  console.log("New tab: " + tab.id);
});

甚至更好:直接将回调作为第二个参数提供给 create 函数:

var newTab = browser.tabs.create({ url: someUrl }, (tab) => {
  console.log("New window: " + window.id);
});

查看 chrome 文档(似乎也适用于 Edge):https://developer.chrome.com/extensions/tabs#method-create

请注意:如果您的目标是使用 windows.create(object createData, function callback)

创建一个新的 window(而不是新的标签页),您也可以实现同样的效果