var MongoClient = require('mongodb').MongoClient;
var main = {
getResult: function(callback) {
MongoClient.connect('mongodb://localhost:27017/local', function(err, db) {
// Use the admin database for the operation
var adminDb = db.admin();
// List all the available databases
adminDb.listDatabases().then(function(dbs) {
var result = [];
dbs.databases.forEach(function(element, index) {
result.push(element.name);
})
db.close();
callback(result);
});
});
}
};
module.exports = main;
b.js:
var a = require("./a");
a.getResult(function(result){
console.log(result);
});
你的實作有點奇怪,我覺得下面這種比較適合。
a.js
b.js:
另外,require js檔不寫 .js 副檔名。如果想用promise的方式而不用callback的方式寫異步,請參考 bluebird。
module.exports為什麼放在then回呼函數呢?
要知道a.js的主邏輯是非同步執行的~~~
建議:
1)export功能模組
2)export的模組繼承EventEmitter
3)在promise函數執行完畢後,發送事件通知
4)在導入模組的地方,監聽這個事件通知