guarantee asynchronous execution for batch reads and write queues

pull/1/head
ansuz 5 years ago
parent fb50fe09ce
commit 1da662687f

@ -8,6 +8,8 @@ If the result of IO or computation is requested while an identical request
is already in progress, wait until the first one completes and provide its
result to every routine that requested it.
Asynchrony is guaranteed.
## Usage
Provide:
@ -51,11 +53,12 @@ module.exports = function (/* task */) {
var args = Array.prototype.slice.call(arguments);
//if (map[id] && map[id].length > 1) { console.log("BATCH-READ DID ITS JOB for [%s][%s]", task, id); }
map[id].forEach(function (h) {
h.apply(null, args);
setTimeout(function () {
map[id].forEach(function (h) {
h.apply(null, args);
});
delete map[id];
});
delete map[id];
});
};
};

@ -4,7 +4,7 @@ q(id, function (next) {
// whatever you need to do....
// when you're done
next();
next(); // guaranteed to be asynchronous :D
});
*/
@ -16,9 +16,11 @@ module.exports = function () {
var map = {};
var next = function (id) {
if (map[id] && map[id].length === 0) { return void delete map[id]; }
var task = map[id].shift();
task(fix1(next, id));
setTimeout(function () {
if (map[id] && map[id].length === 0) { return void delete map[id]; }
var task = map[id].shift();
task(fix1(next, id));
});
};
return function (id, task) {

Loading…
Cancel
Save