在响应AJAX请求之前,如何在Express中等待异步响应?

时间:2019-04-27 15:46:28

标签: node.js ajax express

我正在对Express服务器进行AJAX调用,然后需要向数据库发出异步请求。我试过使用await / async,还尝试了.then的承诺。

问题是,我的服务器在到达testfunc后才自动响应,而不是等待promise或return语句。

这导致将空值发送回客户端。有什么方法可以让Express在响应AJAX请求之前等待承诺或回报?

下面是我正在尝试的示例。

exports.testFunc = function(){

    var data = []

    asyncCall().then(function () {
        //Populate data array

        return { 'data' : data } 
    })
}

1 个答案:

答案 0 :(得分:1)

异步功能完成后,处理程序需要显式写入快速响应对象

https://expressjs.com/en/api.html#res

当前将执行处理程序,并将返回隐式解释为响应完成。缺少的是异步操作和响应完成之间的联系。这应该通过快速响应对象来处理。

异步操作完成后,您可以调用res.send