2016-04-22 52 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