I'm developing a chrome extension and I will store objects sent by server. For example, I will receive:
command = {id:"1", type: "A", size: "B", priority: "C"}
If I had a database, I would insert it as a line in table commands
.
Using chrome.storage, I'm storing an array of these object in key commands
.
But, when I receive a new command by server, I have to get from local storage, update the array and then set again. I'm worried about cases when I receive another command while I'm getting and setting or while I delete a stored command. I'm thinking about semaphores, but I don't know if it's a great idea.
Can someone suggest me what to do?
thanks!
Extensions can use a database: IndexedDB (the sample code may look convoluted, but it's pretty simple in the actual extensions, for example two small functions here, getStyles and saveStyle, or IDB-keyval wrapper library).
If you want to use
chrome.storage
, just maintain a globalqueue
array that is populated by the server listener:and processed in
chrome.storage.local.get
callback:As Javascript engine is single-threaded, there's no need to worry
queue
might be changed whilechrome.storage.local.get
runs.