是否可以在 Chrome 浏览器扩展/附加组件上混合使用本地和同步存储?
本地将存储大量数据,但同步将是可以跨多个设备同步的较小子集。
browser.storage.local
.get([a,b])
.then(() => {
browser.storage.sync
.get([c,d])
.then(doSomething, onError);
}, onError);
我在想类似上面的事情,但由于某种原因,它似乎没有执行代码(当我添加
console.log
时)
有人尝试过类似的事情吗?
感谢任何回复/帮助。
我会发表评论,而不是回答,但我还没有代表。
稍微重新格式化和一些额外的位,当我运行时:
( 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)是,这就是它存在的原因。