Redis
 sql >> Datenbank >  >> NoSQL >> Redis

JavaScript-Entwurfsmuster – Umgang mit unerwünschter Asynchronität

Sie kämpfen mit Asynchronität, weil Sie Ihre Funktionen immer noch in einem synchronen Paradigma schreiben.

Bei Asynchronität sollten Sie Rückrufe an Ereignisse anhängen. Sie sollten kein Ergebnis von einer asynchronen Funktion wie get_latest_results() erwarten , aber Sie sollten ihm eine Callback-Funktion als Argument übergeben, die aufgerufen wird, wenn die Ergebnisse bereit sind. Der Rückruf wird alles tun, was mit Ihren Ergebnissen getan werden muss:

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
}

Dann können Sie Ihre Funktion so aufrufen:

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