आप एसिंक्रोनस के साथ संघर्ष कर रहे हैं क्योंकि आप अभी भी अपने कार्यों को एक सिंक्रोनस प्रतिमान में लिख रहे हैं।
एसिंक्रोनस में आपको ईवेंट में कॉलबैक संलग्न करना चाहिए। आपको get_latest_results()
जैसे एसिंक्रोनस फ़ंक्शन से परिणाम की उम्मीद नहीं करनी चाहिए , लेकिन परिणाम तैयार होने पर आपको इसे एक कॉलबैक फ़ंक्शन के रूप में लागू करने के लिए एक तर्क के रूप में पास करना चाहिए। कॉलबैक आपके परिणामों के साथ जो कुछ भी करने की आवश्यकता है वह करेगा:
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
}
तब आप अपने फ़ंक्शन को इस तरह कॉल कर सकते हैं:
get_latest_results(1000, function (result) {
//--- Do whatever needs to be done with the latest result...
});