Fla*_*der 6 javascript google-chrome google-chrome-extension
我想做的事。
我希望我的扩展能够存储一些有关浏览器使用情况的信息chrome.storage.local
,如果收集的数据足够大,可以通过 ajax 将其发送到我的数据库,当然还可以清除它,这样相同的数据就不会再次发送。
问题是什么。
问题是,这chrome.storage.local.get
是对回调进行操作的异步函数:
chrome.storage.local.get('data',function(data){...})
Run Code Online (Sandbox Code Playgroud)
...并且没有内置方法来附加存储的某些对象。所以看来,data
当需要添加某些内容时,添加 new 的唯一方法就是执行以下操作:
chrome.storage.local.get('data',function(data){
data.push('some new information');
chrome.storage.local.set({'data' : data},function(){}
})
Run Code Online (Sandbox Code Playgroud)
但这并不安全。例如,当来自多个源的大量数据出现时,很可能会丢失一些信息,因为很少有事件可以data
同时读取,甚至不知道其他某个事件正在同时附加此数据,因此基本上,只有最后一个(我的意思是执行时间)事件会正确写入,而所有其他事件都会被覆盖,因为当事件触发时其他记录尚未存储。
发送也是同样的情况...
chrome.storage.local.get('data',function(data){...}){
chrome.storage.local.set({'data':[]},function(){})
sendViaAjax(data);
}
Run Code Online (Sandbox Code Playgroud)
get
由于清除是异步的,因此在和之间发生的某些事件的写入过程中可能会被清除set
。
问题是...
我该如何做才能避免某些数据丢失的可能性(或者至少将其最小化)?
归档时间: |
|
查看次数: |
842 次 |
最近记录: |