我有如下代码,它打印最大的partyCode:
工作:
Map
输出:
var partyWithLargestPartyCode = Party.find().sort("-partyCode").limit(1);
var largestPartyCode;
partyWithLargestPartyCode.exec(function(err, p) {
largestPartyCode = p[0].partyCode;
console.log(largestPartyCode);
});
不工作:
3
输出:
var partyWithLargestPartyCode = Party.find().sort("-partyCode").limit(1);
var largestPartyCode;
partyWithLargestPartyCode.exec(function(err, p) {
largestPartyCode = p[0].partyCode;
});
console.log(largestPartyCode);
所以,我想让第二个代码块工作。我怎么能这样做?
答案 0 :(得分:1)
您无法使第二个示例正常工作,因为这是异步的工作方式。 partyWithLargestPartyCode.exec()
处理需要一些时间,并且总是会在console.log(largestPartyCode);
之后执行。
如果您想了解更多相关信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop
将来,您将能够以async/await
的同步方式编写异步代码,如下所示:
async function myFunc() {
var myVar = await asynchFunction();
console.log(myVar); // this will work
}