Anda dapat menjanjikan seluruh modul seperti itu dengan bluebird:
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);
Ini hanya perlu dilakukan di satu tempat untuk satu kali di aplikasi Anda, bukan di mana pun di kode aplikasi Anda.
Setelah itu anda tinggal menggunakan metode seperti biasa kecuali dengan akhiran Async dan tidak melewatkan callback :
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();
}
});
Jadi sekali lagi, jika Anda memanggil fungsi seperti
foo(a, b, c, function(err, result) {
if (err) return console.log(err);
//Code
});
Versi yang mengembalikan janji disebut seperti:
fooAsync(a, b, c).then(...)
(Kesalahan yang tidak tertangkap dicatat secara otomatis sehingga Anda tidak perlu memeriksanya jika Anda hanya akan mencatatnya)