sql >> Base de Datos >  >> NoSQL >> Redis

Espere la devolución de llamada de la función asíncrona en el último evento stream.on('data')

Puede resolver este problema utilizando la biblioteca asíncrona. Puede usar el siguiente patrón para cualquier transmisión.

var AsyncLib = require('async');

var worker = function (payload, cb) {
    //do something with payload and call callback
    return cb();
};

var concurrency = 5;
var streamQueue = AsyncLib.queue(worker, concurrency);

var stream = //some readable stream;

stream.on('data', function(data) {
    //no need to pause and resume
    var payload = '//some payload';
    streamQueue.push(payload);
})
.on('end', function() {
    //register drain event on end and callback
    streamQueue.drain = function () {
        callback();
    };
});