当前位置: 首页 > news >正文

天津专业的网站建设公司阿里云服务器 wordpress

天津专业的网站建设公司,阿里云服务器 wordpress,建设工程合同的性质是,可以自己免费做的软件最近俺在接触 Chrome 插件开发#xff0c;需要把一个数据存放到浏览器的存储中。这个数据结构有点复杂#xff0c;它包含一个 Map 和一个数组。我使用 chrome.storage.local API来存储这个数据#xff0c;然后在另一个地方获取数据。保存数据的代码并没有报错#xff0c;但… 最近俺在接触 Chrome 插件开发需要把一个数据存放到浏览器的存储中。这个数据结构有点复杂它包含一个 Map 和一个数组。我使用 chrome.storage.local API来存储这个数据然后在另一个地方获取数据。保存数据的代码并没有报错但是俺发现获取的时候获取结果的内容为空这是为什么呢 下面是我封装的保存数据和获取数据的方法 // 要存储的数据结构 const mindDataObj {keywordMap: new Map(),mindDataArr: [] };/*** 获取存储对象* param {string} key 存储对象的键* returns {PromiseObject} 返回一个包含存储对象的 Promise*/ export async function getObject(key) {return new Promise((resolve, reject) {chrome.storage.local.get([key], (result) {if (chrome.runtime.lastError) {return reject(chrome.runtime.lastError)}resolve(result[key] || {})})}) }/*** 保存存储对象* param {string} key 存储对象的键* param {Object} obj 要保存的对象* returns {Promisevoid} 返回一个 Promise表示操作完成*/ export async function saveObject(key, obj) {return new Promise((resolve, reject) {chrome.storage.local.set({ [key]: obj }, () {if (chrome.runtime.lastError) {return reject(chrome.runtime.lastError)}resolve()})}) }为什么会这样 经过查找资料发现chrome.storage.local 的存储机制只能存储和检索序列化的 JSON 对象虽然JSON可以很好地处理对象和数组但对于Map、Set等ES6中引入的复杂数据结构JSON是无法直接序列化和反序列化的。因此尽管你可能没有在保存数据时遇到错误但在尝试读取非JSON兼容类型的数据时这些数据将因无法被正确序列化而丢失。 解决方案 总之一句话chrome.storage.local 只能存储 JSON 兼容的数据类型如对象、数组、字符串、数字等Map 和 Set 需要转换为对象或数组才能正确存储。在这里我们通过 chrome.storage.local 存储时需要先进行序列化处理而在读取时需要进行反序列化处理。 步骤1: 序列化和反序列化Map对象 我们先增加两个方法做序列化的处理serializeMap 和 deserializeMap 方法用于将 Map 对象转换为数组从而可以存储在 chrome.storage.local 中并在读取时将其转换回 Map 对象。 /*** 序列化Map对象* param {Map} map 要序列化的Map对象* returns {Object} 序列化后的对象*/ function serializeMap(map) {return Array.from(map.entries()); }/*** 反序列化Map对象* param {Array} entries 序列化后的对象* returns {Map} 反序列化后的Map对象*/ function deserializeMap(entries) {return new Map(entries); }步骤2: 存储和读取数据 然后再增加操作数据的方法saveMindData 和 getMindData 方法用于保存和获取 mindDataObj 格式的数据包括序列化和反序列化步骤。 /*** 保存mindDataObj格式的数据* param {string} key 存储对象的键* param {Object} initMindDataObj 要保存的对象* returns {Promisevoid} 返回一个 Promise表示操作完成*/ export async function saveMindData(key, mindDataObj) {const serializedData {keywordMap: serializeMap(mindDataObj.keywordMap),mindDataArr: mindDataObj.mindDataArr};await saveObject(key, serializedData); }/*** 获取mindDataObj格式的数据* param {string} key 存储对象的键* returns {PromiseObject} 返回一个包含mindDataObj格式数据的 Promise*/ export async function getMindData(key) {const serializedData await getObject(key);const mindDataObj {keywordMap: deserializeMap(serializedData.keywordMap || []),mindDataArr: serializedData.mindDataArr || []};return mindDataObj; }
http://www.w-s-a.com/news/216209/

相关文章:

  • 家教辅导培训网站建设中东跨境电商平台有哪些
  • 商城形式的网站需要多少钱做医药商城网站的公司吗
  • 贵阳网站设计zu97彩票创建网站
  • 网站建设与分工的论文足球世界排名
  • 网站首页添加标签如何用模板建站
  • 官方网站包括哪几个网站泰安的网站建设公司哪家好
  • 域名虚拟服务器做网站如何搭建企业网站
  • 用手机做网站服务器口碑好的常州网站建设
  • 摄影网站的设计与实现开题报告太原企业自助建站
  • 做如美团式网站要多少钱做网站怎么去文化局备案
  • 桂平市住房和城乡建设局网站网站建设与管理自考题
  • 怎么做公司网站制作凡科官方网
  • 达人设计网官方网站建筑效果图网站有哪些
  • 网站定制哪家快建筑室内设计网
  • 网站创建方案论文旅游网站的设计与制作html
  • 网站建设的数据导入导出开发小程序需要多少钱费用
  • 局网站建设进入前十名wordpress user role editor
  • 网站托管如何收费搜一下百度
  • 中国建设劳动协会网站wordpress 区块链媒体
  • 网站开源是什么意思西安做网站科技有限公司
  • 自己怎么用h5做网站肇庆seo
  • 长沙网站seo优化公司东莞企业官方网站建设
  • 网站个人备案材料北京网站推广价格
  • 百度做任务的网站电子工程网网站
  • 中介订制网站开发玉溪网站建设设计
  • 免费网站免费无遮挡手机页面设计软件
  • 网站建设需求规格说明书中山模板建站公司
  • wordpress get值网站建设 seo sem
  • 网站建设微信开发工厂代加工平台
  • 厦门 网站建设 公司哪家好asp.net 创建网站