我正在使用node.js构建应用程序,并希望确认有关模块和节点异步性质的问题。如果我有一个模块,如:
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_list
函数之前是否调用了函数email_to
?如果没有,有没有办法保证在email_to
函数之后调用email_list
函数?
提前致谢〜
答案 0 :(得分:2)
我评论过,但我会详细说明一下。你想要做这样的事情:
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的事件生命周期的文档。在一个非常高的层面上,你将要研究承诺和回调是如何工作的。这就是你"保证"事情会在你期望的时候被调用。
在这种情况下, email_list 会返回一个承诺。您可以在 email_to 功能中使用该承诺的结果。您可以使用然后
等待该承诺的结果