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

Patrones de diseño de JavaScript:lidiar con la asincronía no deseada

Tiene problemas con la asincronía porque todavía está escribiendo sus funciones en un paradigma sincrónico.

En asincronía, debe adjuntar devoluciones de llamada a eventos. No debe esperar un resultado de una función asíncrona como get_latest_results() , pero debe pasarle una función de devolución de llamada como argumento para que se invoque cuando los resultados estén listos. La devolución de llamada hará lo que sea necesario con sus resultados:

var get_latest_results = function (feedId, readyCallback) {
    client.get('feed:' + feedId + ':latest', function (err, res) {
        var latest_reading_key = res.toString();
        client.hgetall(latest_reading_key, function (err, res) {
            readyCallback(res);                           //--- Trigger Callback
        });
    });
    // how do I specify a return value for this function? //--- You don't
}

Entonces puedes llamar a tu función así:

get_latest_results(1000, function (result) {
   //--- Do whatever needs to be done with the latest result...
});