Stai lottando con l'asincronia perché stai ancora scrivendo le tue funzioni in un paradigma sincrono.
In asincrono dovresti allegare callback agli eventi. Non dovresti aspettarti un risultato da una funzione asincrona come get_latest_results()
, ma dovresti passargli una funzione di callback come argomento da invocare quando i risultati sono pronti. La richiamata farà tutto ciò che è necessario fare con i tuoi risultati:
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
}
Quindi puoi chiamare la tua funzione in questo modo:
get_latest_results(1000, function (result) {
//--- Do whatever needs to be done with the latest result...
});