Node.js - 异步方法调用问题

时间:2016-05-02 19:28:36

标签: javascript node.js asynchronous methods

我正在使用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函数?

提前致谢〜

1 个答案:

答案 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 功能中使用该承诺的结果。您可以使用然后

等待该承诺的结果