我正在对Express服务器进行AJAX调用,然后需要向数据库发出异步请求。我试过使用await / async,还尝试了.then
的承诺。
问题是,我的服务器在到达testfunc
后才自动响应,而不是等待promise或return语句。
这导致将空值发送回客户端。有什么方法可以让Express在响应AJAX请求之前等待承诺或回报?
下面是我正在尝试的示例。
exports.testFunc = function(){
var data = []
asyncCall().then(function () {
//Populate data array
return { 'data' : data }
})
}
答案 0 :(得分:1)
异步功能完成后,处理程序需要显式写入快速响应对象
https://expressjs.com/en/api.html#res
当前将执行处理程序,并将返回隐式解释为响应完成。缺少的是异步操作和响应完成之间的联系。这应该通过快速响应对象来处理。
异步操作完成后,您可以调用res.send