Skip to content

Instantly share code, notes, and snippets.

@DavidBruant
Created March 3, 2016 19:40
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save DavidBruant/8b628704eee463dfb40e to your computer and use it in GitHub Desktop.
Save DavidBruant/8b628704eee463dfb40e to your computer and use it in GitHub Desktop.
Remember.js
"use strict";
function remember(...args){
const [key, value] = args;
if(args.length === 1){ // recall
return new Promise(resolve => {
setTimeout(() => {
const val = localStorage.getItem(key);
try{ resolve(JSON.parse(val)) }
catch(e){ resolve(val); }
})
});
}
if(args.length === 2){ // retain
return new Promise( (resolve, reject) => {
setTimeout(() => {
let toStore = value;
try{ if(Object(value) === value) toStore = JSON.stringify(value); }
catch(e){ reject(e) }
try{
localStorage.setItem(key, toStore);
resolve(key);
}
catch(e){ reject(e); }
})
});
}
}
function forget(key){
return new Promise( (resolve, reject) => {
setTimeout(() => {
try{
resolve(localStorage.removeItem(key))
}
catch(e){
reject(e);
}
})
});
}
@DavidBruant
Copy link
Author

remember('yo', {a: 25});
remember('yo').then(({a}) => console.log(a));
forget('yo')

@borisschapira
Copy link

Nice !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment