Node.js – asynchronous方法调用问题

我正在使用node.js构build一个应用程序,并希望确认一个有关模块和节点asynchronous性质的问题。 如果我有一个模块,如:

var email_list = function() { //perform some database query or calculation } exports.email_to = function() { email_list.forEach(function(email) { console.log(email); }); }; 

而在另一个文件中,我打电话给我的email_to方法,在我的email_to函数被调用之前函数email_list被调用了吗? 如果没有,有没有办法保证email_to函数在email_list函数email_list调用?

在此先感谢〜

我评论,但我会详细说明一点。 你会想要做这样的事情:

 var email_list = function() { return knex('email_list').where({ verified: true }); }; exports.email_to = function() { var response = email_list() .then(function(emailList){ emailList.forEach(function(email){ console.log(email); }); }); }; 

一般来说,有很多关于Node和Javascript的事件生命周期的文档。 在一个非常高的层次上,你将要研究承诺和callback是如何工作的。 这就是你如何“保证”你所期望的事情。

在这种情况下, email_list返回一个承诺。 您可以在您的email_to函数中使用该承诺的结果。 你等待那个承诺的结果, 然后使用