0.0.2 • Published 9 years ago
background-promise v0.0.2
Background Promise
A simple cache that will load the value on demand. During a load process, if the cache receive multiples requests, it will push it to a queue, and trigger all with the response when the request receive the response.
Options
load(resolve, reject) {...}: Function used to load a new value requiredimmediate: Should load the value in background during the creation. (true | false)ttl: Time in millis, that will keep the value. If it expires, the firstget()call will load a new one.interval: Time in millis that will load a new value in background.promise: Promise type that should be used internally to create all promises.
Methods
get(): Return aPromiseto the value.getLast(): Return aPromiseto the value, and avoid the queue, return the last loaded value!update(): Force an update on the cache.isExpired(): What the name says!
Simple example
import backgroundPromise from 'background-promise'
const content = backgroundPromise({
load(resolve, reject) {
setTimeout(() => {
resolve(Math.random())
}, 1000)
}
})
// the first call will trigger the executor to resolve the number
content.get().then(number => { ... })
// Will go to the queue and wait for the same response
content.get().then(number => { ... })
// after 1 second
content.get().then(number => { ... })Example to cache a request
import request from 'request'
import backgroundPromise from 'background-promise'
const content = backgroundPromise({
ttl: 30000, // live for 30 seconds
interval: 300000, // each 5 minutes it will auto update
load(resolve, reject) {
request('https://api.github.com/repos/adolfojunior/background-promise', function (error, response, body) {
if (!error && response.statusCode == 200) {
resolve(body)
} else {
reject(response.statusCode)
}
})
}
})
// the first call will trigger the executor to resolve the request
content.getLast().then(body => { ... })
// Will always get the last loaded content!
// if it is expired, it will trigger the update before the interval
content.getLast().then(body => { ... })
// Will get the cached content!
content.getLast().then(body => { ... })0.0.2
9 years ago