【发布时间】:2019-06-13 12:19:29
【问题描述】:
我正在尝试编写一个可重用的函数,该函数在解决来自 mongodb 查询的承诺之前不会返回。 我几乎可以使用 IIFE 函数实现这一点,但在我从函数返回之前似乎无法访问解析的值。在下面的 sn-p 中,我可以将变量 d 打印到控制台,但我无法使其在 iffe 之外可访问,因此无法返回结果。
在下面的示例中,第一个 console.log 返回正确的结果,但第二个返回待处理的 promise。 任何有关如何使这项工作或替代方法的建议将不胜感激。
function getDNInfo (party){
var result;
result= (async () => { result = await mongo.findOne({DN:party.user_Number}, "BWUsers")
.then(
(d)=>{
console.log(d)
result=d;
}"
)}
)();
console.log(result)
return result;
}
【问题讨论】:
-
您不能同步处理将来检索到的值(异步)
-
result在回调有机会更新值之前返回。您是否希望getDNInfo同步? -
我已经阅读了上面提到的副本——他们没有明确回答我的问题。我能找到的每个示例都显示了在 Promise 中可访问的值,但从未在 Promise 之外显示可访问的形式。它认为解决方案是使完整的调用堆栈异步函数,我试图避免,但似乎没有办法绕过它。
标签: node.js mongodb async-await