我已经定义了一条路线。请求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不是函数。
我一直在寻找答案。我认为我的方法是错误的。
我的异步函数返回后如何响应?
答案 0 :(得分:1)
仔细阅读您的代码。
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)