मैं यहां ब्लूबर्ड वादों का उपयोग करता हूं। ध्यान दें कि कैसे कोड का आशय स्पष्ट है और कोई नेस्टिंग नहीं है।
सबसे पहले, hgetall कॉल और क्लाइंट का वादा करें -
var client = Promise.promisifyAll(client);
अब, वादों के साथ कोड लिखते हैं, .then
.map
. के साथ नोड कॉलबैक और एकत्रीकरण के बजाय . क्या .then
संकेत है कि एक async ऑपरेशन पूरा हो गया है। .map
चीजों की एक सरणी लेता है और उन सभी को आपके hgetall कॉल की तरह एक async ऑपरेशन में मैप करता है।
ध्यान दें कि ब्लूबर्ड एक Async
. कैसे जोड़ता है (डिफ़ॉल्ट रूप से) वादा किए गए तरीकों का प्रत्यय।
exports.awesomeThings = function(req, res) {
// make initial request, map the array - each element to a result
return client.lrangeAsync("awesomeThings", 0, -1).map(function(awesomeThing) {
return client.hgetallAsync("awesomething:" + awesomeThing);
}).then(function(things){ // all results ready
console.log(things); // log them
res.send(JSON.stringify(things)); // send them
return things; // so you can use from outside
});
};