आप ब्लूबर्ड के साथ इस तरह पूरे मॉड्यूल का वादा कर सकते हैं:
var Promise = require("bluebird");
var mongoskin = require("mongoskin");
Object.keys(mongoskin).forEach(function(key) {
var value = mongoskin[key];
if (typeof value === "function") {
Promise.promisifyAll(value);
Promise.promisifyAll(value.prototype);
}
});
Promise.promisifyAll(mongoskin);
यह आपके आवेदन में केवल एक ही स्थान पर एक बार के लिए किया जाना चाहिए, आपके आवेदन कोड में कहीं भी नहीं।
उसके बाद आप सामान्य रूप से केवल Async प्रत्यय को छोड़कर विधियों का उपयोग करते हैं और कॉलबैक पास नहीं करते हैं:
req.db.collection('users').find().toArrayAsync()
.then(function(doc) {
if (doc) {
return req.db.collection('users').find().toArrayAsync();
}
})
.then(function(doc) {
if (doc) {
return req.db.collection('users').find().toArrayAsync();
}
})
.then(function(doc) {
if (doc) {
return req.db.collection('users').find().toArrayAsync();
}
});
तो फिर, अगर आप
. जैसे फ़ंक्शन को कॉल करते हैंfoo(a, b, c, function(err, result) {
if (err) return console.log(err);
//Code
});
प्रॉमिस-रिटर्निंग वर्जन को इस तरह कहा जाता है:
fooAsync(a, b, c).then(...)
(बिना पकड़ी हुई त्रुटियां स्वचालित रूप से लॉग हो जाती हैं, इसलिए यदि आप केवल इसे लॉग करने जा रहे हैं तो आपको उनकी जांच करने की आवश्यकता नहीं है)