Anda berjuang dengan asinkron karena Anda masih menulis fungsi Anda dalam paradigma sinkron.
Dalam asinkron Anda harus melampirkan panggilan balik ke acara. Anda seharusnya tidak mengharapkan hasil dari fungsi asinkron seperti get_latest_results()
, tetapi Anda harus memberikannya fungsi panggilan balik sebagai argumen yang akan dipanggil saat hasilnya sudah siap. Panggilan balik akan melakukan apa pun yang perlu dilakukan dengan hasil Anda:
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
}
Kemudian Anda dapat memanggil fungsi Anda seperti ini:
get_latest_results(1000, function (result) {
//--- Do whatever needs to be done with the latest result...
});