Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Padrões de design JavaScript - Lidando com assincronia indesejada


Você está lutando com a assincronia porque ainda está escrevendo suas funções em um paradigma síncrono.

Em assincronia, você deve anexar retornos de chamada aos eventos. Você não deve esperar um resultado de uma função assíncrona como get_latest_results() , mas você deve passar uma função de retorno de chamada como um argumento a ser invocado quando os resultados estiverem prontos. O retorno de chamada fará o que for necessário com seus 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
}

Então você pode chamar sua função assim:
get_latest_results(1000, function (result) {
   //--- Do whatever needs to be done with the latest result...
});