gpt4 book ai didi

javascript - 如何将 chrome.storage.sync.get 转换为 browser.storage.sync.get? (或者,如何使用 Promise)

转载 作者:行者123 更新时间:2023-12-01 00:57:49 30 4
gpt4 key购买 nike

我正在尝试移植一个扩展,但我的 JS 非常生疏。 https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities说等效的 WebExtensions API 使用 Promise 代替:

原文:

    var read = function(name, deflt) {
return new Promise(function(resolve){
chrome.storage.sync.get([name], function(result){
if (chrome.runtime.lastError)
throw new Error(chrome.runtime.lastError);
resolve(result[name] || deflt);
});
});
};

我觉得应该有一个非常简单且很好的解决方案,因为代码应该返回一个 promise ,并且 browser.storage.sync.get 也恰好已经返回了一个 promise ......我只是不知道怎么办。

最佳答案

由于 browser.storage.sync.get 返回一个 Promise(并假设签名与 chrome 版本相同),因此类似的内容应该是等效的。这会立即返回一个 Promise,您可以调用 then()catch() 来分别处理成功和错误情况

var read = function(name, deflt) {
return browser.storage.sync.get([name])
.then(result => {
if (browser.runtime.lastError) { // assuming this exists
throw new Error(browser.runtime.lastError);
}

return result[name] || deflt
})
};

read('foo', 'barDefault')
.then(doStuffWithResult)
.catch(console.error)

关于javascript - 如何将 chrome.storage.sync.get 转换为 browser.storage.sync.get? (或者,如何使用 Promise),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56388937/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com