【发布时间】:2019-08-06 21:30:26
【问题描述】:
我正在尝试学习 Nodejs 中的 Promise。碰巧当我尝试运行两个承诺时,第一个得到解决,但第二个既不拒绝也不解决。
更新 - 承诺没有按顺序运行。
两种方法都试过了
let promiseConnectMongo = mongoDB.connectMongo();
let promiseCreateCollections = mongoDB.createCollections();
第一:
promiseConnectMongo
.then((result) => {
console.log(result);
return promiseCreateCollections;
});
第二:
promiseConnectMongo.then((result) => {
console.log(result);
promiseCreateCollections.then((result) => {
console.log(result);
});
两种方法(不要太花哨):
connectMongo: function () {
return new Promise((resolve, reject) => {
MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {
if (err)
reject("Failed to connect db.\n")
else {
dbase = db.db(dbName);
resolve("Connected sucessfully to the database: " + dbName);
}
});
});
},
createCollections: function () {
return new Promise((resolve, reject) => {
console.log("Creating collections");
dbase.createCollection("products", (err, result) => {
if (err)
reject(err);
console.log(result);
})
.then(() => dbase.createCollection("bag", (err, result) => {
if (err)
reject(err);
console.log(result);
}))
.then(() => dbase.createCollection("brands", (err, result) => {
if (err)
reject(err);
console.log(result);
}))
resolve("Collections created sucessfully");
});
}
【问题讨论】:
-
createCollection只有在没有通过回调的情况下才返回promise,所以可能会出现js错误。您可以通过删除该回调来进行检查吗?
标签: node.js mongodb asynchronous promise