Skip to content

Instantly share code, notes, and snippets.

@rektide
Created October 3, 2018 18:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rektide/49ff95dfd6984372bd307705dfe5d30c to your computer and use it in GitHub Desktop.
Save rektide/49ff95dfd6984372bd307705dfe5d30c to your computer and use it in GitHub Desktop.
Lazy getters
import { makeFoo, makeBar } from "./providers.js"
/**
* Create property `name` on `obj` that will run `provider`'s factory method the first time
*/
function makeLazyGetter(obj, name, provider){
let value
Object.defineProperty(obj, name, {
get: function(){
if(!value){
value= factory()
}
return value
}
})
}
export function injectProvidersMiddleware(req){
makeLazyGetter(req, "foo", makeFoo)
makeLazyGetter(req, "bar", makeBar)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment