如何使功能同步

时间:2016-08-12 08:17:00

标签: javascript node.js

我有如下代码,它打印最大的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);    

所以,我想让第二个代码块工作。我怎么能这样做?

1 个答案:

答案 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
}