同时异步保存到铬无限存储

Simultaneous asynchronous saving to chromes unlimited storage

本文关键字:无限 存储 保存 异步      更新时间:2023-09-26

我正在尝试编写一个涉及使用chrome无限存储空间的Chrome扩展程序。我目前正在从存储中检索,如下所示:

chrome.storage.local.get(null, function (items) {  
    return items;  
}  

然后像这样保存回存储:

chrome.storage.local.set(items);

我的问题是在这种情况下,"items"是一个关联数组,我希望能够同时向该数组添加多个值。由于 get 方法是异步的,因此我无法保证尝试调用从存储中获取数组、向其添加键/值对然后将其设置的两个不同进程将导致两者都被保存。更糟糕的是,如果有足够的并发进程,这样做似乎会使扩展崩溃。

有没有更好的方法来使用chrome.storage?还是我必须实现某种排队系统?我以前使用的是没有异步方面的localStorage,但超过了最大存储容量,因此我尝试切换到使用无限存储。

我会继续使用您想到的排队系统。如果两个进程都有权访问全局对象,请让该对象管理写入,并让应用程序的其余部分使用该对象而不是chrome.local.storage.set(...)进行写入。

两个无限的存储选项

  • 铬存储
  • window.webkitStorageInfo

两者都是异步的,这在性能方面很好,我想实现多个setget操作的同步是您解决这个问题的方法。