节点:快递。 我如何推迟回复?

我已经定义了一条路线。 请求URL时,将调用一个asynchronous函数,该函数将在完成时返回一个值。 返回的值将是我对get请求的响应。 所以,我想延迟response.get,直到返回值。

我想过把回应传递给callback函数。

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不是一个函数。

我一直在寻找答案。 我假设我正在做错误的事情。

我的asynchronous函数返回后如何响应?

仔细阅读你的代码。

 function search(query, response, callback) { request("https://www.google.co.uk", (err, response, body) => { 

你的lambda也有一个名为response的参数。 这就是所谓的“阴影”外部 – 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)