Skip to content

osmose-collective/localstorage-lock

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

localstorage-lock

Generic localstorage lock implementation

API

runWithLock

Run a specified code block with a localstorage lock

runWithLock(<localstorage key>, <fn to run>, <options>);

Options:

{
  timeout: 1000, // Time release the lock if function fails or takes too long
  lockWriteTime: 50, // Expected time to write to localstorage (unlikely to change)
  checkTime: 10, // How often to recheck the lock, if don't have the lock
  retry: true // Retry getting the lock, if not acquired
}

Example Use

// Make sure only one browser window retrieves a localstorage key and does console.log
runWithLock('lock.some-key', () => {
  
  const someKey = localStorage.getItem('some-key');
  console.log(someKey)
  localStorage.removeItem('some-key')
}, { timeout: 500 });

tryRunWithLock

Wrapper function for tryWithLock with option retry: false

About

Generic localstorage lock implementation

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%