在 chrome/firefox 浏览器扩展中使用本地和同步存储

问题描述 投票:0回答:1

是否可以在 Chrome 浏览器扩展/附加组件上混合使用本地和同步存储?

本地将存储大量数据,但同步将是可以跨多个设备同步的较小子集。

browser.storage.local
  .get([a,b])
  .then(() => {
    browser.storage.sync
      .get([c,d])
      .then(doSomething, onError);
  }, onError);

我在想类似上面的事情,但由于某种原因,它似乎没有执行代码(当我添加

console.log
时)

有人尝试过类似的事情吗?

感谢任何回复/帮助。

google-chrome firefox google-chrome-extension browser firefox-addon
1个回答
0
投票

我会发表评论,而不是回答,但我还没有代表。

稍微重新格式化和一些额外的位,当我运行时:

( function () {
  function onError( err ) {
    console.error( err );
  }

  function doSomething( o ) {
    console.log( '2', o );
  }

  browser.storage.local.get(
    [ 'a', 'b' ]
  ).then(
    ( o ) => {
      console.log( '1', o ); // don't throw the results away
      browser.storage.sync.get(
        [ 'c', 'd' ]
      ).then( doSomething, onError );
    }, onError
  );
} () );

在控制台中,我得到:

1 Object {  }
2 Object {  }

它们是空的对象,因为我没有存储任何东西。如果我运行(更像你的原始代码):

( function () {
  function onError( err ) {
    console.error( err );
  }

  browser.storage.local.get(
    [ 'a', 'b' ]
  ).then(
    () => {
      browser.storage.sync.get(
        [ 'c', 'd' ]
      ).then( console.log, onError );
    }, onError
  );
} () );

在控制台中,我仍然得到:

Object {  }

所以我不确定你说的是什么意思:

我在想类似上面的事情,但由于某种原因,它似乎没有执行代码(当我添加

console.log
时)

你在到达之前就已经开始轰炸了吗?

无论如何,我不能肯定地说你的想法会起作用,因为我不使用同步,但我相信它会起作用。我的理解(基于 the MDN page for storage.sync)是,这就是它存在的原因。

© www.soinside.com 2019 - 2024. All rights reserved.