我已经定义了一条路线。当请求 URL 时,将调用一个异步函数,该函数将在完成时返回一个值。返回的值将是我对 get 请求的响应。所以,我想延迟response.get直到返回值。
我考虑过将响应传递给回调函数。
app.get("/:param", (request, response) => {
let param = request.params.param
search(param, response, displayResult)
})
function displayResult(info, response){
console.log(info)
response.end(info)
}
function search(query, response, callback) {
request("https://www.google.co.uk", (err, response, body) => {
if (!err && response.statusCode == 200) {
return callback("Hello there! "+query, response)
} else {
console.log(err)
}
})
}
这行不通。浏览器给出错误:ERR_EMPTY_RESPONSE,程序崩溃并出现错误:TypeError: response.end is not a function。
我一直在寻找答案。我想我处理事情的方式是错误的。
异步函数返回后如何响应?
最佳答案
仔细阅读您的代码。
function search(query, response, callback) {
request("https://www.google.co.uk", (err, response, body) => {
您的 lambda 还有一个名为 response
的参数。这就是 "Shadowing"外面的——ExpressJS 的。
给它们一个独特的名字,它就会起作用:
function search(query, response, callback) {
request("https://www.google.co.uk", (err, result, body) => {
if (!err && result.statusCode == 200) {
return callback("Hello there! "+query, response)
关于javascript - Node : Express. 如何延迟响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794945/