Redis
 sql >> Base de données >  >> NoSQL >> Redis

Modèles de conception JavaScript - Gérer l'asynchronisme indésirable

Vous êtes aux prises avec l'asynchronisme parce que vous écrivez toujours vos fonctions dans un paradigme synchrone.

En mode asynchrone, vous devez attacher des rappels aux événements. Vous ne devriez pas attendre un résultat d'une fonction asynchrone comme get_latest_results() , mais vous devez lui transmettre une fonction de rappel en tant qu'argument à appeler lorsque les résultats sont prêts. Le rappel fera tout ce qui doit être fait avec vos résultats :

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
}

Ensuite, vous pouvez appeler votre fonction comme ceci :

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