asynchronous函数在节点js中处理

我在印刷这两个报表时遇到了一个问题,我有两个function

var mongoose = require( 'mongoose' ); var_show_test = mongoose.model( 'test' ); exports.showTest = function(req,res) { var jsonString = []; var_show_test.find(function (err, testa) { console.log("In find"); }); console.log("In function"); } 

但它是按顺序打印报表

 In function In find 

我想要的是按顺序打印报表,例如

 In find In function 

我知道这是由于asynchronous调用,我有点困惑callback函数。 如何处理这个以便按顺序打印报表。

对于初学者来说,如果你只是想login到控制台,那么你可以把第二个console.log放到你的callback中 –

 exports.showTest = function(req,res) { var jsonString = []; var_show_test.find(function (err, testa) { console.log("In find"); console.log("In function"); }); } 

但是,如果你想在你的findcallback执行后执行一个函数/方法,那么你需要在这里使用一个闭包 –

 exports.showTest = (function (callback) { return function(req,res) { var jsonString = []; var_show_test.find(function (err, testa) { console.log("In find"); callback(); }); } })(callbackFunc); function callbackFunc() { console.log('In my callback!'); }