2016-04-22 38 views
1

我已经定义了一条路线。当请求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不是函数。

我一直在寻找一段时间的答案。我假设我正在以错误的方式处理事情。

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

回答

1

仔细阅读您的代码。

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

你拉姆达也有一个叫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) 
+0

棕榈。面对。谢谢。 – user3574603