Chrome 扩展 |有什么方法可以让 chrome.storage.local.get() 返回一些东西吗?

2024-05-08

在我的 chrome 扩展中,我需要使用 chrome 存储。在我的后台脚本中,我首先创建一个对象并将其添加到 chrome 存储中,然后我想从那里获取我的对象并返回。像这样的东西:

...
var obj = {};
chrome.storage.local.set(obj, function () { });
...
var data = getData(obj); // I want my object to be returned here

var returnedData = null;
function getData(obj) {
    chrome.storage.local.get(obj, function(result) {
        returnedData = result; // here it works, I can do something with my object
    });
    return returnedData; // here it doesn't work
} 

据我了解here https://stackoverflow.com/questions/16708564/converting-local-storage-to-chrome-storage-for-get-and-set chrome.storage.local.get与其后果是异步的。但是有什么方法可以从 chrome 存储中获取某些内容并将其返回吗?我的意思是也许我应该包起来chrome.storage.local.get在另一个函数中?

提前谢谢了!


如果您想远离全局变量并且可以满足现代浏览器的要求,那么您可以实现原生 JavaScript承诺对象 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise。例如,以下函数返回单个给定键的存储数据:

function getData(sKey) {
  return new Promise(function(resolve, reject) {
    chrome.storage.local.get(sKey, function(items) {
      if (chrome.runtime.lastError) {
        console.error(chrome.runtime.lastError.message);
        reject(chrome.runtime.lastError.message);
      } else {
        resolve(items[sKey]);
      }
    });
  });
}

// Sample usage given this data:
// { foo: 'bar' }
getData('foo').then(function(item) {
  // Returns "bar"
  console.log(item);
});

如果您需要 IE11 及更低版本的支持,那么您必须求助于类似的库jQuery https://api.jquery.com/category/deferred-object/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome 扩展 |有什么方法可以让 chrome.storage.local.get() 返回一些东西吗? 的相关文章

随机推荐

  • CSS 圆角

    我见过很多这方面的代码 但似乎没有一个能很好地工作或根本无法工作 我已经将图片用于圆角 但我需要代码 以便它能够围绕圆角 table 我找到的解决这个问题的唯一解决方案是在边框周围的单元格中添加图像 我还能尝试什么吗 Try selecto
  • 为什么我收到错误“错误 C2259:...无法实例化抽象类”?

    任何帮助都是appriced 我正在研究 C 工厂模式 但收到此错误 1 gt c users brian documents visual studio 2010 projects cst276lab 3 guitar hpp 456 错
  • Ruby + Rspec:我应该如何测试 attr_accessor?

    我有一个ReturnItem class specs require spec helper describe ReturnItem do is this enough it should respond to chosen it shou
  • 为什么我的 UITableView 顶部有额外的填充,样式为 UITableViewStyleGrouped 在 iOS7 中

    从 iOS7 开始 我的顶部有额外的空间UITableView有一种风格UITableViewStyleGrouped 这是一个例子 tableview从第一个箭头开始 有35个像素的不明填充 然后绿色标题是UIView由返回viewFor
  • 具有漫反射和法线贴图纹理的 3D 模型

    我想使用 libgdx 的资源加载器加载具有漫反射纹理和法线贴图的 3D 模型 据我所知 fbx 以及转换后的 g3dj g3db 格式可以包含漫反射纹理 正如我在 fbx conv 示例中看到的那样 骑士 g3db 如何为其添加法线贴图纹
  • 如何使用 Kotlin 在 ListAdapter 中使用 Filterable?

    我会用一个SearchView过滤我的RecyclerView 在 stackoverflow 和其他网站上我发现只是使用的示例Filterable与 Java 和RecyclerView Adapter当我使用时ListAdapter 所
  • 在 Phaser3 中从 Multiatlas 加载文件时出错

    尝试使用 Phaser 和 TexturePacker 中的多图集功能 出现此错误 VM32201 1 GET http localhost 8080 bg sd json 404 Not Found Texture js 250 Text
  • 如何过滤 pyspark 列表中值的列?

    我有一个数据框原始数据 我必须在 X 列上应用值 CB CI 和 CR 的过滤条件 所以我使用了下面的代码 df dfRawData filter col X between CB CI CR 但我收到以下错误 Between 恰好需要 3
  • Hibernate 工具无法检测一对一关系

    我正在尝试使用 Eclipse 中的 Hibernate 工具 注释 从 MySQL 数据库生成实体类 但是 我在生成一对一关系代码时遇到了麻烦 我的 MySQL 表当前正在确保这种关系 但 Hibernate 工具无法检测到它 一个用户与
  • 我的 POST 编辑操作是否会覆盖 EF 中的所有字段?

    假设我有一个包含 7 个字段的数据库记录 我只想编辑字段 1 的内容 所以我点击了 GET EDIT 操作 它使用我的视图模型呈现强类型视图 然后我继续更新字段 1 但是 我的POST 操作包含所有字段的 映射 如下所示 实体框架也是如此
  • 如何使用canvas获取html5中的视频截图

    您好 是否可以使用 html 5 canvas 捕获正在播放的视频的屏幕截图 看起来这里是可能的 http html5doctor com video canvas magic http html5doctor com video canv
  • 无法使用 Mockito 模拟 Spring-Data-JPA 存储库

    我正在尝试为服务编写测试 但我没有成功地嘲笑repository依赖性 其他非存储库依赖项已成功模拟 存储库实例始终是实际实现 而不是模拟实例 我正在使用 Spring Boot 和 Spring Data JPA 来构建应用程序 Mock
  • 从函数正确传播“decltype(auto)”变量

    这是来自 decltype auto 变量有任何实际用例吗 https stackoverflow com questions 57438217 are there any realistic use cases for decltypea
  • 使用步骤 c++ 构建向量

    是否可以在不使用 C 中的循环的情况下以固定步骤创建从一个值到另一个值的向量 例如 我想用步长 0 5 构建一个从 1 到 10 的向量 在 MATLAB 中我可以按如下方式执行此操作 vector 1 0 5 10 c 中有类似的东西吗
  • 如何使用 apache commons cli 指定多个选项?

    我想要这样的东西 java programName jobs1 C 10 W 20 java programName job2 java programName job3 含内容 Option o1 new Option job2 some
  • 人体的宽度和高度

    如何识别图像中人体的高度和宽度 你需要一些参考点 除非您知道相机设置 位置 变焦 镜头畸变等 以及人相对于相机的位置 否则简单的照片是不够的 如果您确实有参考 例如背景中的网格或其他东西 那么您可以测量网格并从那里开始 听起来不像你需要的
  • 扭曲的C++代码[重复]

    这个问题在这里已经有答案了 可能的重复 未定义的行为和序列点 https stackoverflow com questions 4176328 include lt iostream h gt int main int i 7 j i j
  • 正则表达式的替代(流畅?)界面设计

    我刚刚看到了一个巨大的 Java 正则表达式 这让我对正则表达式的一般可维护性进行了一些思考 我相信大多数人 除了一些糟糕的 Perl 贩子 都会同意正则表达式很难维护 我正在考虑如何解决这种情况 到目前为止 我最有希望的想法是使用流畅的界
  • ListView 中的焦点控件

    上下文 我想要一个不会获得焦点的 ListView 例如不会 当用户触摸它时突出显示该行 然而每个行小部件都有它自己的 OnClickListener 这是我在布局 xml 中指定的内容 android choiceMode none an
  • Chrome 扩展 |有什么方法可以让 chrome.storage.local.get() 返回一些东西吗?

    在我的 chrome 扩展中 我需要使用 chrome 存储 在我的后台脚本中 我首先创建一个对象并将其添加到 chrome 存储中 然后我想从那里获取我的对象并返回 像这样的东西 var obj chrome storage local