Make sure the last sync call to an async function is executed after all previous ones have finished
MIT License
Make sure the last sync call to an async function is executed after all previous ones have finished
npm install last-one-wins
var low = require('last-one-wins')
var pick = low(function (num, cb) {
setTimeout(function () {
console.log('picked', num)
cb()
}, Math.floor(Math.random() * 100))
})
pick(1)
pick(2)
pick(3)
pick(4)
pick(5) // this one will always win since its called the last
Calling the above will print out
picked 1
picked 5
var fn = low(asyncWorker)
Wrap a async function to make sure that the last sync call to that function is executed after any previous calls. Note that not all calls are executed - only the last one is guaranteed to be executed.
fn
and asyncWorker
should have the signature (value, cb)
This module is useful if you want sync a value to a leveldb and want to make sure the latest version of that value is the one written. For example
var update = low(function (val, cb) {
db.put('my-key', val, cb)
})
update('a')
update('b')
update('c')
Is guaranteed to always write c
to the key my-key
.
MIT