【发布时间】:2019-05-09 16:31:35
【问题描述】:
我无法让它发挥作用,并开始认为我误解了一些基本的东西。我经历了很多例子,我看不出我做错了什么。
这是我的承诺:
myPromise = new Promise ( resolve => {
if (matchNew(id)) resolve();
})
myPromise.then( () => {
console.log('resolved');
})
matchNew() 是一个在完成保存到数据库后简单地返回“true”的函数。我的控制台确认发生了这种“真实”返回,但代码没有等待它,并且上面的承诺永远不会解决。
更新
这就是我所说的 MatchNew() 的目的:它等待 MongoDB 确认写入成功,然后返回 true。
function matchNew(id) {
/* do some stuff */
// update database
MongoPath.Match
.replaceOne( {'_id': m._id}, thisMatch, {writeConcern: { j: true}})
.then( (msg) => {
console.log(msg);
return true;
});
}
我想确保我的主代码正在等待,直到我从 matchNew 获得返回值,然后再继续...
【问题讨论】:
-
将
resolve()移动到matchNew完成操作后调用的回调中。 -
"matchNew() 是一个在完成保存到数据库后简单地返回 'true' 的函数。" - 一个函数不能异步
return。它的实际作用是什么?
标签: javascript node.js mongodb promise